[
{
"id": "features-capabilities-at-poster-scale",
"role": "features",
"name": "Capabilities at poster scale",
"shape": "list",
"tags": [
"type-led",
"poster"
],
"directions": [
"type-only-statement",
"hero-object",
"loud-flat-poster",
"borrowed-category",
"colour-chapters"
],
"needs": [],
"blueprint": "No images. The heading, two to four words, is the first line of the list itself, set at the same size as the items but in the soft ink, so no separate title sits above. Five to eight capability names follow, one per line, at clamp(40px, 5.2vw, 84px), medium to heavy weight, leading 1.0, tight tracking, flush left on the page margin across columns 1–8 of 12. Each name's one-sentence description is set at 16–18px in columns 9–12, its first baseline aligned with the name's baseline (CSS grid, align-items: first baseline). Rows are separated by 0.35em of space and nothing else. On hover one row keeps full ink while the others fall to 35% opacity. Leave 18–22vh of empty ground above and below; nothing else shares the section.",
"mobile": "Names drop to 11vw and stay one per line; a name that will not fit breaks onto a second line with a hanging indent. Each description sits directly under its name at 16px, indented one margin width, with 28px before the next name. The soft-ink heading line stays as the first row. All rows at full ink.",
"seenIn": [
"aww-cominvi",
"aww-cerebrium",
"opl-specia1ne"
]
},
{
"id": "features-pinned-heading-passing-rows",
"role": "features",
"name": "Pinned heading, passing rows",
"shape": "pinned",
"tags": [
"colour-field",
"type-led"
],
"directions": [
"pinned-poster",
"loud-flat-poster",
"colour-chapters",
"split-stage",
"editorial-report"
],
"needs": [],
"blueprint": "One flat saturated field, full-bleed, as tall as its content. Columns 1–5: the heading, two or three words, at clamp(56px, 6.6vw, 104px) in the heaviest weight, position: sticky; top: 32px, so it holds while the right side travels. Columns 7–12: four to six capability blocks stacked with 120px between them. Each block is a title at 28px bold, then a two-part row: a portrait photograph at 3:4, 180–220px wide with square corners, and beside it, top-aligned, a plain list of four to six short lines at 18px with 14px between lines. Photographs alternate between the left and the right of their list, so the column does not read as a ladder. One ink colour, chosen for contrast on the field. The heading releases when the bottom of the last block reaches it.",
"mobile": "The heading becomes a sticky bar at the top of the section: one line at 9vw on the field colour with 12px padding, holding while blocks pass under it. Each block stacks its title, a full-width 4:3 photograph, then the list at 17px. 72px between blocks.",
"seenIn": [
"opl-protip-marketing",
"aww-cerebrium",
"aww-sharplink"
]
},
{
"id": "features-one-scene-stepping-statements",
"role": "features",
"name": "One scene, stepping statements",
"shape": "full-bleed",
"tags": [
"photo-led"
],
"directions": [
"place-carries-it",
"pinned-poster",
"dark-room",
"hero-object",
"uneven-photographs"
],
"needs": [],
"blueprint": "A wrapper 350–450vh tall holds a sticky full-bleed photograph (100vw by 100svh) with a calm, symmetrical subject and a clear upper third; a neutral dark scrim covers only that upper third. At top centre, five or six short statements of two to five words are stacked at 18–20px with 10px between them; the first of them is the section's heading. One statement is at full white and the rest at 45% opacity; the active line steps down the stack as the reader scrolls (IntersectionObserver on invisible 70vh markers). For each statement, two small photographs with square corners, 160–240px wide and of different ratios, fade in left and right of the centre line at different heights, then leave when the next pair arrives. No other text. A low-key image on a deep ground works equally well.",
"mobile": "The photograph stays sticky at 100svh, cropped to its centre. The statement stack moves to the bottom third over a scrim, at 17px, left-aligned on the margin. Each statement brings one small photograph only, 44vw wide, placed in the top-right corner with a 16px margin.",
"seenIn": [
"aww-seasats",
"opl-eagles-nest"
]
},
{
"id": "features-stacking-colour-sheets",
"role": "features",
"name": "Stacking colour sheets",
"shape": "stack",
"tags": [
"colour-field",
"poster"
],
"directions": [
"colour-chapters",
"page-is-the-object",
"pinned-poster",
"loud-flat-poster",
"borrowed-category"
],
"needs": [],
"blueprint": "Three to five capabilities, each a full-width flat colour sheet about 86svh tall with only its top corners rounded at 28px. Every sheet is position: sticky, with top offsets rising by 72px from one sheet to the next, so each new sheet slides up over the last and leaves the previous sheet's title band showing, like tabbed folders in a drawer. Inside a sheet: the capability name top-left at clamp(28px, 3vw, 44px), sitting within that 72px band; a paragraph of up to 40ch at 18px bottom-left; and in columns 7–12 one photograph filling the sheet from below the band to the bottom edge, square corners, no inset. Sheet colours follow the palette in a fixed order, with ink chosen per sheet. The heading, two to four words at clamp(40px, 5vw, 80px), sits on the ground above the stack with 48px beneath and scrolls away normally.",
"mobile": "Sheets stay sticky but the offset shrinks to 52px and the name drops to 22px so it fits the visible band. Inside each sheet the photograph comes first at 4:3 and full width, then the paragraph at 17px with 20px padding. Sheets are as tall as their content, 70svh at least.",
"seenIn": [
"aww-hilden-kaira",
"opl-nia-creative",
"opl-april-leihuanani-evangelista",
"aww-mosbys-files"
]
},
{
"id": "features-mosaic-of-unlike-tiles",
"role": "features",
"name": "Mosaic of unlike tiles",
"shape": "mosaic",
"tags": [
"dense",
"colour-field"
],
"directions": [
"dense-tiles",
"editorial-report",
"colour-chapters",
"specimen-catalogue",
"loud-flat-poster"
],
"needs": [],
"blueprint": "A 12-column grid with 8px gaps and rows of 96px, filled with no empty cells and no outlines. Six to eight filled tiles in four sizes only: 6×5, 6×3, 3×3 and 3×2 (columns × rows). The rule that keeps it from being a card grid: no two neighbouring tiles hold the same kind of thing. One tile is the heading alone, two to four words at 4vw, top-left. One is a photograph covering its tile. One is a single figure at 6vw with a caption. One is a short list of four lines at 20px. The others are a single sentence each at 28–32px. Text sits top-left with 24px padding; tiles holding one sentence leave their lower half empty. Tile fills: the ground one tone darker, two palette colours, and photographs. One corner radius everywhere, either 0 or 8px.",
"mobile": "Two columns with 6px gaps. The heading tile and the photograph tile span both columns; sentence tiles span both at their natural height; the figure and list tiles sit side by side as a pair of squares. Order: heading, photograph, pair, sentence, sentence.",
"seenIn": [
"opl-sand-studio",
"opl-builders-table",
"aww-cominvi",
"opl-uglycash"
]
},
{
"id": "features-statement-cell-dark-rows",
"role": "features",
"name": "Statement cell, dark rows",
"shape": "split",
"tags": [
"type-led",
"dense"
],
"directions": [
"dense-tiles",
"editorial-report",
"type-only-statement",
"borrowed-category"
],
"needs": [],
"blueprint": "Two halves butted together, each 50vw wide and at least 90svh tall, with no gap. Left half, in a pale tone: the heading in three short lines at clamp(36px, 4.2vw, 68px), its middle line pushed flush right while the first and third stay flush left (text-align set per line), so the block zigzags inside the cell. A two-sentence paragraph of 30ch sits at the bottom-left and the single action at the bottom-right on the same baseline. Right half, in the darkest tone: four or five rows of equal height filling it, told apart by alternating two near-black tones, not by lines. Each row is a three-part grid: a title at 28px (5 parts), a short paragraph at 16px (4 parts) and a plain list of three terms at 15px (3 parts), all top-aligned with 28px padding. No images anywhere in the section.",
"mobile": "The halves stack. The light cell comes first at 70svh with the zigzag heading at 10vw and the paragraph at its foot. The dark rows follow at full width; each row stacks its title and paragraph, and its three terms run inline as one sentence separated by commas. Rows keep the alternating tones.",
"seenIn": [
"aww-aspen-search"
]
},
{
"id": "features-staggered-fragment-cells",
"role": "features",
"name": "Staggered fragment cells",
"shape": "grid",
"tags": [
"ui-led",
"dense"
],
"directions": [
"product-performs",
"dense-tiles",
"quiet-instrument"
],
"needs": [
"product-ui"
],
"blueprint": "A three-column grid of six filled cells with 8px gaps, each cell 420–460px tall and filled one tone off the ground, no outlines. Every cell has two parts: a text part (a title at 17px medium and three lines at 15px in the soft ink, 24px padding) and a real fragment of the interface at true size (a control, a menu, a table slice, a swatch strip) docked flush against the opposite edge of the cell and cropped by it. The stagger is the idea: across the first row cells run text-top, fragment-top, text-top; the second row runs the reverse, so fragments form a checkerboard. Fragments differ in shape and size on purpose. The heading, two to four words at 32–40px, sits left-aligned above the grid with 56px beneath it and no supporting line.",
"mobile": "One column of cells at their natural height with 6px gaps. Every cell runs text first, fragment second, but fragments alternate between docking to the left edge and the right edge, and they are allowed to run off the side of the cell at true size instead of shrinking.",
"seenIn": [
"opl-dabbit",
"opl-woblo"
]
},
{
"id": "features-small-proof-beside-text",
"role": "features",
"name": "Small proof beside text",
"shape": "list",
"tags": [
"quiet",
"ui-led"
],
"directions": [
"quiet-instrument",
"product-performs",
"split-stage",
"name-as-monument",
"contact-sheet"
],
"needs": [],
"blueprint": "One narrow module repeated four to six times down the page, never alternating sides. Each module is 640px wide at most and starts on the page's text margin (at about 22% of the viewport on an understated page). Left part: a flat panel 360px wide and 120 to 200px tall, one tone off the ground, radius 8px, holding one small exact demonstration: a cropped interface fragment at true size, or a tightly cropped photograph covering the panel. Right part, 20px away and top-aligned: a heading of one or two lines at 18px medium and two short paragraphs at 15px in the soft ink, in a column 250px wide. Panel heights vary with their content; text always hangs from the panel's top edge. 96–120px of empty ground between modules. The section heading is 24–28px, on the same left edge, 64px above the first module. In a column under 600px the text moves beneath its panel.",
"mobile": "Each module stacks: the panel at full width and natural height, then heading and paragraphs 16px below on the same left edge, at 17px and 15px. 64px between modules. Panels keep their true-size contents and crop from the right instead of scaling down.",
"seenIn": [
"opl-rows"
]
},
{
"id": "features-comparison-set-as-text",
"role": "features",
"name": "Comparison set as text",
"shape": "table",
"tags": [
"type-led",
"quiet"
],
"directions": [
"type-only-statement",
"editorial-report",
"product-performs",
"quiet-instrument",
"borrowed-category"
],
"needs": [],
"blueprint": "A comparison table with no lines and no tick marks. A CSS grid: capability names in columns 1–5 of 12 at 22–24px medium, then three answer columns of equal width (plans, methods, or this against the usual way). Every cell answers in words at 17px: 'Yes, unlimited', 'Up to five', 'Not yet', never a symbol. Seven to ten rows, each 64–72px tall, with every other row on a ground one tone darker so the eye tracks across; rows touch. The column that matters is one filled block in the accent or ink colour running the full height of the table behind its cells and rising 24px above the first row, with its text reversed. Column names sit in the top row at 17px bold. The heading, two to four words at 40–48px, hangs top-left above column 1 with 48px beneath.",
"mobile": "The table turns on its side: one block per capability. The name at 20px bold, then three lines beneath, each giving a column name and its answer at 16px; the featured column's line is set on the filled colour at full width. Blocks alternate the two ground tones.",
"seenIn": [
"aww-pp-neue-montreal"
]
},
{
"id": "features-one-size-name-columns",
"role": "features",
"name": "One-size name columns",
"shape": "index",
"tags": [
"quiet",
"type-led",
"dense"
],
"directions": [
"contact-sheet",
"quiet-instrument",
"name-as-monument",
"dark-room",
"uneven-photographs"
],
"needs": [],
"blueprint": "Pure text at one size. Three columns start on columns 1, 4 and 7 of the 12-column grid, leaving columns 10–12 empty on purpose. Each column opens with a group name in full ink and continues with a tight stack of six to ten capability names in the soft ink, all at 16–17px, regular weight, line-height 1.25, no bullets and no symbols; one blank line separates group name from stack. Hovering a name brings it to full ink and shows a one-line description in a fixed spot: the top of the empty columns 10–12, at the same size. The heading is no larger than 28px; two or three words, alone on column 1, 96px above the columns. Give the section 20vh of empty ground above and below, so the smallness reads as decided. Works on light or deep grounds.",
"mobile": "Columns stack with 40px between groups; text rises to 18px with line-height 1.4 for touch. Group names stay in full ink. Hover descriptions are dropped; each group ends instead with one sentence in the soft ink that sums it up. The heading is 24px, 48px above.",
"seenIn": [
"aww-revelatio-studio",
"aww-pp-neue-montreal",
"aww-lama-lama-2"
]
},
{
"id": "features-specimens-on-colour-tiles",
"role": "features",
"name": "Specimens on colour tiles",
"shape": "grid",
"tags": [
"object-led",
"colour-field"
],
"directions": [
"specimen-catalogue",
"hero-object",
"one-motif",
"colour-chapters",
"borrowed-category"
],
"needs": [],
"blueprint": "Each capability is represented by one object photographed alone and shown on a flat colour tile. Columns 1–3 hold the heading (two to four words at 40–52px), top-aligned, with a 30ch sentence beneath and nothing else down the rest of that column. Columns 4–12 hold a grid of five or six tiles in two rows with 10px gaps: tiles are 4:5 except one, which is double width at 8:5 and placed second in the first row. Tile colours rotate through three palette fields. Each photograph is centred at about 70% of its tile's height; on light tiles use mix-blend-mode: multiply so a white studio background disappears. Under each tile, outside it and aligned to its left edge: the capability name at 20px medium and one fact at 16px in the soft ink. No text on the tiles and no hover lift.",
"mobile": "The heading and its sentence sit on top at full width. Tiles become a two-column grid with 8px gaps; the double tile spans both columns at 8:5 and comes first. Names shrink to 17px and facts to 15px, still under each tile.",
"seenIn": [
"aww-noho",
"aww-coffeetech-r",
"opl-when-you-wish-upon-a-starboy"
]
},
{
"id": "features-statements-on-colour-fields",
"role": "features",
"name": "Statements on colour fields",
"shape": "statement",
"tags": [
"colour-field",
"poster",
"type-led"
],
"directions": [
"colour-chapters",
"loud-flat-poster",
"type-only-statement",
"sentence-as-layout",
"borrowed-category"
],
"needs": [],
"blueprint": "Three or four full-bleed flat colour fields, each 72–80svh tall, butted together with no gap. Each field holds one benefit and is almost empty. The benefit is a phrase of two to four words at clamp(56px, 9vw, 150px), heavy, leading 0.9, on two lines at most, hugging the bottom-left corner with 28px margins. Its explanation is three lines at 17–18px, 30ch wide, placed near the top at column 8, so the eye travels the diagonal from small text to big phrase. On alternate fields the arrangement mirrors: phrase bottom-right and right-aligned, paragraph top-left at column 2. Text on each field is ink or paper, whichever contrasts more. There is no separate section heading: the first field's phrase is the heading. Nothing else appears on the fields: no images, shapes or buttons.",
"mobile": "Fields are 64svh tall. The paragraph sits top-left at 16px across 80% of the width; the phrase sits bottom-left at 13vw on two lines. Mirroring is dropped; alternate fields right-align the paragraph only, keeping the phrase on the left margin.",
"seenIn": [
"opl-anidachi",
"aww-px-push"
]
},
{
"id": "features-rows-with-margin-photographs",
"role": "features",
"name": "Rows with margin photographs",
"shape": "list",
"tags": [
"type-led",
"photo-led"
],
"directions": [
"editorial-report",
"uneven-photographs",
"place-carries-it",
"sentence-as-layout",
"colour-chapters"
],
"needs": [],
"blueprint": "Everything hangs from one vertical axis at column 5, about 35% of the width. First the heading: a statement of up to five words at clamp(40px, 5vw, 80px) starting on the axis, vertically centred in an otherwise empty 70svh of ground. Then four or five benefit rows, each starting on the same axis: a title at clamp(28px, 3vw, 48px) and under it a paragraph of 34ch at 17px. Columns 1–4 stay empty. At the right margin each row carries one photograph, top-aligned with its title and deliberately unequal: 240px wide at 4:5 in one row, 320px at 3:2 in the next, 180px square after that. Rows are separated by 96–120px of space, not lines. On a saturated field, set all type in one pale ink and leave the photographs ungraded.",
"mobile": "The axis collapses to the left margin. The statement sits at 9vw in 50svh of empty ground. Each row stacks its title at 26px, the paragraph, then its photograph at alternating widths: 100%, 70% flush right, 55% flush left. 64px between rows.",
"seenIn": [
"aww-px-push"
]
},
{
"id": "features-paragraph-with-picture-words",
"role": "features",
"name": "Paragraph with picture words",
"shape": "statement",
"tags": [
"type-led",
"poster"
],
"directions": [
"sentence-as-layout",
"one-motif",
"product-performs",
"editorial-report",
"borrowed-category"
],
"needs": [],
"blueprint": "One paragraph does the work of a feature grid. Three or four sentences, 35–50 words in total, set at clamp(30px, 3.6vw, 60px), leading 1.18, medium weight, across columns 1–11, left-aligned. Each sentence names one capability, and directly after that capability's key noun sits an inline slot: an inline-block frame 1em tall and 1.9em wide, radius 0.18em, dropped 0.12em below the baseline, holding a tight photograph crop (object-fit: cover) or a real interface control at readable size. Four slots at most, never two on one line. The nouns keep the weight and colour of the rest; the slots are the only emphasis. Mark it up as a paragraph and give the section a visually hidden heading of two or three words; nothing visible sits above. 72px lower, starting at column 7, one supporting sentence at 18px and the action.",
"mobile": "The paragraph drops to 7vw with leading 1.22 and fills the width. Slots stay inline at 1em tall but narrow to 1.5em wide. If a slot lands alone at the start of a line, let it; do not shrink the type. The supporting sentence and the action follow at full width.",
"seenIn": [
"aww-monolog",
"opl-uncle-rudy",
"aww-cominvi",
"opl-midnight-2"
]
},
{
"id": "features-capabilities-as-a-menu",
"role": "features",
"name": "Capabilities as a menu",
"shape": "table",
"tags": [
"object-led",
"type-led"
],
"directions": [
"page-is-the-object",
"split-stage",
"borrowed-category",
"type-only-statement",
"quiet-instrument"
],
"needs": [],
"blueprint": "The capabilities are set as a printed menu or price list. One paper-coloured sheet, 520–600px wide and taller than it is wide, sits on a contrasting flat ground, centred or starting at column 2; its top and bottom edges are cut into shallow scallops or a zigzag with clip-path, its sides straight. On it, centred at the top, the heading: two or three words at 44–56px, then 40px of space. Below, items in two or three groups; each group opens with its name at 20px bold. Each item is a row: the name at 19px on the left, a short value on the right (a price, a time, a quantity, 'included'), and between them a leader of round 4px dots (border-bottom: 4px dotted, sitting on the baseline). A description at 15px in the soft ink sits under the name, at most 34ch. 18px between items, 44px between groups.",
"mobile": "The sheet fills the width minus 12px margins and keeps its cut top and bottom edges. Names stay left and values right on one line with the dot leader between; descriptions wrap beneath at 15px. Group names drop to 18px. Padding inside the sheet is 20px.",
"seenIn": [
"opl-the-content-architecture",
"aww-pensatori-irrazionali"
]
},
{
"id": "features-shape-marked-small-points",
"role": "features",
"name": "Shape-marked small points",
"shape": "split",
"tags": [
"object-led",
"quiet"
],
"directions": [
"one-motif",
"hero-object",
"product-performs",
"borrowed-category"
],
"needs": [],
"blueprint": "For the many minor points that do not deserve a row each. Columns 1–5: one photograph inside a single large shape taken from the subject's own geometry (a circle, an arch, a chamfered block), made with clip-path or border-radius, about 78svh tall and pushed 12% past the section's left edge so the viewport crops it. Columns 7–12: the heading, two to four words at 40–48px, then 56px lower a grid of eight to twelve points in three columns with 40px column gaps and 44px row gaps, no cells and no fills. Each point is a title at 17px medium preceded by the same shape drawn at cap height (0.7em, flat fill, inline SVG or a styled span), then two lines at 15px in the soft ink. The small shapes take a different palette colour per column, which is the only colour on the right side.",
"mobile": "The shaped photograph comes first, 82vw wide, cropped by the left edge and no taller than 60svh. The heading follows at 30px. Points become one column with 28px between them; the small shape hangs in the margin to the left of each title, so titles and text share one edge.",
"seenIn": [
"opl-dabbit",
"aww-sstr-friction-reduction"
]
},
{
"id": "showcase-two-giant-words-compared",
"role": "showcase",
"name": "Two giant words compared",
"shape": "statement",
"tags": [
"type-led",
"poster"
],
"directions": [
"type-only-statement",
"editorial-report",
"loud-flat-poster",
"borrowed-category"
],
"needs": [],
"blueprint": "No photographs: the thing shown is a pair of words, characters or figures that make the point by comparison (before and after, input and output, ours and the usual). At the top of the section, on one row: the heading, two to four words at 28–36px, at the left margin, and a paragraph of up to 60 words at 17px starting at column 7. Then 12vh of space. Below, two specimens side by side, one starting on column 1 and one on column 7, each set at clamp(180px, 34vw, 520px) with leading 0.8, so each fills about half the viewport's width. The section has a fixed height and overflow: hidden, so its bottom edge cuts both specimens at roughly 60% of their height. One short caption at 16px sits above the top-left of each specimen, naming it. Both specimens share one ink; the difference is in the letterforms or values, not in colour.",
"mobile": "Heading first, then the paragraph, at full width. The two specimens stack, each at 62vw type size in its own 38svh box with overflow hidden so the lower part is cut. Captions sit above each box at 15px. The second box takes the inverse colours of the first.",
"seenIn": [
"aww-pp-neue-montreal"
]
},
{
"id": "showcase-two-objects-two-fields",
"role": "showcase",
"name": "Two objects, two fields",
"shape": "split",
"tags": [
"object-led",
"colour-field"
],
"directions": [
"specimen-catalogue",
"hero-object",
"colour-chapters",
"borrowed-category"
],
"needs": [],
"blueprint": "Two panels side by side, each 50vw wide and 92svh tall, in two different flat tones from the palette, meeting on a clean vertical edge with no gap. Each panel is dominated by one cut-out object photograph scaled to 130–150% of the panel's width and positioned so the panel's top edge crops it: the reader sees the lower two-thirds of the object, very close. On light panels use mix-blend-mode: multiply to lose a white studio background. Along the bottom of each panel, 28px in from the edges, one row: the name at 20px medium and a price or fact at 17px on the left; on the right, two small rectangular actions, one filled with ink and one with paper. Nothing sits in the middle of a panel. The heading, two to four words at 32–40px, is set at the top-left of the first panel only, in the empty corner beside the object.",
"mobile": "Panels stack, each 78svh tall, the object scaled to 150% of the width and cut by the top and right edges. The bottom row becomes two lines: name and fact, then the two actions side by side at full width. The heading sits top-left on the first panel at 26px.",
"seenIn": [
"aww-noho"
]
},
{
"id": "showcase-object-in-front-of-type",
"role": "showcase",
"name": "Object in front of type",
"shape": "statement",
"tags": [
"object-led",
"poster"
],
"directions": [
"hero-object",
"borrowed-category",
"loud-flat-poster",
"sentence-as-layout"
],
"needs": [],
"blueprint": "Type and object share one space instead of sitting side by side. Three or four lines of display type, one or two words each, are stacked flush left at clamp(72px, 9vw, 150px) with leading 0.88, starting on the left margin and allowed to leave the right edge (white-space: nowrap; overflow: hidden on the section). The lines step through tones of one ink: one at 45%, one at full strength, the rest at 18%. The object photograph, a cut-out or a studio shot blended with multiply, is absolutely positioned over the upper right of the stack at 40–46vw wide, rotated no more than 6 degrees and above the type in the stacking order, so it hides parts of three or four letters. Under the stack, in columns 8–12, a two-paragraph block at 20px gives the facts. The full-strength line is the heading; nothing sits above it.",
"mobile": "Type drops to 15vw and still runs off the right edge. The object sits at 78vw wide, overlapping the last two lines from below instead of from the right, and is cropped by the right edge. The facts block follows at full width and 17px.",
"seenIn": [
"aww-the-watch",
"opl-aevion",
"aww-coffeetech-r"
]
},
{
"id": "showcase-band-of-unequal-panels",
"role": "showcase",
"name": "Band of unequal panels",
"shape": "strip",
"tags": [
"photo-led"
],
"directions": [
"place-carries-it",
"uneven-photographs",
"name-as-monument",
"editorial-report",
"dark-room"
],
"needs": [],
"blueprint": "A modest heading, then one wide band of pictures. The heading, two to four words at 36–44px, starts at column 3, left of centre, with 64px beneath it. The band spans the full viewport width edge to edge and is 68svh tall: four photographs standing side by side with no gaps and deliberately unequal widths, a flex row with flex-grow values of 5, 2, 3 and 2. Each panel is cropped with object-fit: cover to a tall slice, so the band reads as one folded view. The first panel carries a two-line title at 28px in paper colour at its top-left, 24px in, over a neutral scrim that covers only that corner. Hovering a panel raises its flex-grow to 6 over 500ms while the others give way; without hover the widths simply stay. One caption line at 16px sits under the band at the left margin.",
"mobile": "The heading sits on the margin at 28px. The band becomes a two-by-two block with no gaps, 84svh tall in total: the first row split 64/36 and the second 36/64, so the slices stay unequal. The title stays on the first panel. No hover behaviour.",
"seenIn": [
"aww-white-desert",
"aww-tengile-malamala-collection"
]
},
{
"id": "showcase-close-up-with-column-card",
"role": "showcase",
"name": "Close-up with column card",
"shape": "full-bleed",
"tags": [
"photo-led",
"object-led"
],
"directions": [
"hero-object",
"place-carries-it",
"dark-room",
"borrowed-category",
"pinned-poster"
],
"needs": [],
"blueprint": "A full-bleed close-up photograph, 100vw by 100svh, with nothing over most of it. A four-column grid lies on top. One solid card in the ink colour, exactly one grid column wide (about 22vw) and 52svh tall, sits in the second column, vertically centred. Inside it, centred: the item's name at 30–36px, a variant line at 17px, the price or key fact at 17px, a small 3:2 photograph of the whole object (the card shows the whole, the background shows the detail), and at the foot a square-cornered action filling the card's width. The card is opaque, radius 0–6px, with no blur. When the section presents two or three items, each gets its own full-bleed frame and its card moves one column to the right each time, so position carries the sequence. The first card's name is the section heading.",
"mobile": "The photograph fills 100svh, cropped to its most detailed area. The card becomes a full-width block docked to the bottom, 46svh tall, left-aligned inside with 20px padding; the small whole-object photograph sits to the right of the name at 96px wide.",
"seenIn": [
"aww-longbow"
]
},
{
"id": "showcase-live-demo-with-controls",
"role": "showcase",
"name": "Live demo with controls",
"shape": "split",
"tags": [
"ui-led",
"quiet"
],
"directions": [
"product-performs",
"quiet-instrument",
"dense-tiles"
],
"needs": [
"product-ui"
],
"blueprint": "One filled panel, 680–760px wide and about 640px tall, radius 12px, in a tone clearly darker or lighter than the ground, placed on the text column's left edge or centred, with at least 15vh of empty ground above and below. The panel is split 62/38 into two flat areas that differ by one tone. Left area: the product doing its job on real content at true size. Right area: a narrow column of working controls, six to nine stacked rows 44px tall, each with a name at 14px on the left and a slider, toggle or value on the right; changing one changes the demonstration at once. A text link sits in the panel's bottom-left corner. The heading, two to four words at 24–32px, sits above the panel on its left edge with one sentence at 16px; under the panel, one line of start instruction.",
"mobile": "The panel fills the width. The demonstration takes the top at 4:3; the controls follow beneath as full-width rows 52px tall, only the four most telling ones, with a text link that reveals the rest. Heading and sentence sit above at 24px and 16px.",
"seenIn": [
"opl-dialkit",
"opl-textmode-overlay"
]
},
{
"id": "showcase-one-frame-three-distances",
"role": "showcase",
"name": "One frame, three distances",
"shape": "pinned",
"tags": [
"photo-led",
"poster"
],
"directions": [
"pinned-poster",
"hero-object",
"dark-room",
"sentence-as-layout",
"place-carries-it"
],
"needs": [],
"blueprint": "A wrapper 300vh tall holds a sticky stage of 100svh. On the stage one frame is centred: 30vw wide at 4:5, square corners, overflow hidden. Inside it the same photograph is shown at three distances as the reader scrolls: the whole subject, then scaled to 180% toward one detail, then to 320% on a second detail (transform: scale with a transform-origin per stage, 700ms ease, switched by IntersectionObserver on three invisible markers). The sentence is delivered in halves: its first two or three words sit above the frame at clamp(56px, 8vw, 130px), centred; the last words arrive below the frame at the second stage, overlapping the frame's bottom edge by 0.3em. At the third stage one caption of 28ch at 17px appears to the right of the frame, top-aligned. The two halves together are the heading and stay within two lines.",
"mobile": "The frame grows to 70vw at 4:5 and stays sticky at centre. The first half of the sentence sits above it at 13vw, the second half below it at the same size. The third-stage caption appears under the sentence at 16px, centred.",
"seenIn": [
"aww-vero-new-york",
"aww-illoca",
"opl-screentune"
]
},
{
"id": "showcase-one-image-across-tiles",
"role": "showcase",
"name": "One image across tiles",
"shape": "mosaic",
"tags": [
"photo-led",
"dense"
],
"directions": [
"dense-tiles",
"contact-sheet",
"editorial-report",
"colour-chapters"
],
"needs": [],
"blueprint": "One photograph is cut across a board of tiles. A grid of six columns and four rows with 8px gaps spans the full width between 12px margins; every tile is square (aspect-ratio: 1). Each tile shows its own piece of the same image: set the photograph as every tile's background at background-size: 600% 400% and step background-position by column and row, so the picture reads whole through the gaps. Five of the twenty-four tiles are swapped for flat colour tiles from the palette, never two adjacent: one holds the heading (two to four words at 2.6vw, top-left, 16px padding), three hold one fact each at 18px, one holds the action. On hover a tile's piece scales to 108% inside its own clip. Choose a photograph with one clear subject, so the board is legible at a glance.",
"mobile": "Three columns by six rows with 6px gaps, the photograph re-cut at background-size 300% 600% from a portrait crop. Four colour tiles only; the heading tile spans two columns in the top row with the heading at 6vw. Facts drop to 15px.",
"seenIn": [
"aww-produx-design",
"aww-ai-in-design-report-2026"
]
},
{
"id": "showcase-frame-run-one-lifted",
"role": "showcase",
"name": "Frame run, one lifted",
"shape": "strip",
"tags": [
"photo-led",
"quiet"
],
"directions": [
"contact-sheet",
"uneven-photographs",
"specimen-catalogue",
"quiet-instrument"
],
"needs": [],
"blueprint": "Columns 1–3 are a nearly empty column: the heading (two to four words at 24–28px) at the top, a link under it, and one or two short notes at 15px much further down, each level with the frame it describes. Columns 4–12 hold a run of six to eight frames of the same subject at one fixed height of 30vh, with natural widths and 6px gaps: the whole view, a tight crop of the same thing, a detail, the reverse side. The run is allowed to leave the right edge. One frame is lifted out of the row: shown at 2.2 times the row height with its bottom aligned to the row's bottom (flex row, align-items: end), so it stands above the others. Under each frame, at 15px: a name on the left and a single fact on the right. Square corners, no captions on the images.",
"mobile": "The heading and link sit on top. The lifted frame comes first at full width. The rest of the run scrolls sideways beneath it at a fixed height of 34vw with 4px gaps and scroll-snap, bleeding off the right edge. Notes are listed under the run at 15px.",
"seenIn": [
"aww-serotoninn",
"aww-butter",
"aww-no-art"
]
},
{
"id": "showcase-output-slips-along-the-edge",
"role": "showcase",
"name": "Output slips along the edge",
"shape": "full-bleed",
"tags": [
"photo-led",
"object-led"
],
"directions": [
"page-is-the-object",
"borrowed-category",
"place-carries-it",
"loud-flat-poster"
],
"needs": [],
"blueprint": "For subjects whose result is a piece of text or paper: a receipt, a note, a ticket, a written line. A full-bleed photograph, 100vw by 96svh, sets the scene. In the upper centre, left-aligned in a column starting at 18% of the width, two short paragraphs in paper colour at 28–32px, the first opening with the heading's two to four words; a neutral scrim sits behind that column only. Along the bottom, six paper-coloured slips stand side by side across the full width with 12px gaps, each a filled rectangle of a different height (between 26 and 44svh), their lower ends cut off by the section's bottom edge. Two or three of the slips, not all, are tilted by 1–2 degrees. Each slip carries a sample of real output in the text face at 15px: a bold first line, a divider made of typed characters, then four to eight lines.",
"mobile": "The photograph is 100svh. The paragraphs sit in the top third at 22px. Only three slips show, each 30vw wide, standing along the bottom at different heights, and the row scrolls sideways to reveal the rest. Slip text stays at 14px; do not scale it down.",
"seenIn": [
"opl-poetry-camera"
]
},
{
"id": "showcase-object-on-a-disc",
"role": "showcase",
"name": "Object on a disc",
"shape": "index",
"tags": [
"object-led",
"colour-field"
],
"directions": [
"one-motif",
"specimen-catalogue",
"hero-object",
"colour-chapters"
],
"needs": [],
"blueprint": "One section about a viewport tall on a plain ground. A flat filled disc 64vh across, in one palette colour, sits with its centre at 58% of the width; swap the disc for the subject's own shape if it has one. A cut-out object photograph stands in front of it, centred on it, about 78% of the disc's height and breaking the disc's outline at the top. Bottom-left, starting on the margin and ending level with the disc's lower edge: a vertical list of four to six item names at clamp(28px, 2.9vw, 44px), leading 1.15. The selected name is in full ink and the rest at 25%; choosing a name swaps the object (300ms crossfade) and the disc's colour. The heading, two to four words at the same size as the names but in the soft ink, is the first line of that list. One fact about the selected item sits at the disc's right edge at 17px.",
"mobile": "The disc comes first, 86vw across and centred, with the object in front. The names follow as a single sideways-scrolling line at 26px with 24px gaps, the selected one in full ink. The fact sits under the names at 16px.",
"seenIn": [
"aww-cominvi",
"opl-tara"
]
},
{
"id": "showcase-square-plate-spare-text",
"role": "showcase",
"name": "Square plate, spare text",
"shape": "split",
"tags": [
"colour-field",
"photo-led"
],
"directions": [
"split-stage",
"page-is-the-object",
"colour-chapters",
"editorial-report",
"one-motif",
"name-as-monument"
],
"needs": [],
"blueprint": "One flat field split 50/50, at least 88svh tall. Left half: a single square photograph filling the half's width minus 40px margins, vertically centred, square corners. A large simple shape may be laid over it to turn the photograph into the object it stands for: a ring 86% of its width with a 6px stroke and a small solid dot at the centre makes a record; a notch cut by clip-path makes a ticket stub. Right half, a flex column with space-between: at the top a row of three plain text tabs at 18px (editions, years, variants), the active one in full ink and the others at 40%; in the middle the title, two to four words at 32–40px bold, with a 34ch description 48px below; along the bottom two filled rectangular cells side by side, each half the column wide and 72px tall, acting as the two actions, one in ink and one a tone off the field.",
"mobile": "The square photograph comes first at full width with 16px margins. The tabs sit under it as one row at 17px. Then the title at 28px, the description, and the two action cells stacked, each full width and 60px tall.",
"seenIn": [
"aww-paul-kalkbrenner"
]
},
{
"id": "how-it-works-lines-that-step-across",
"role": "how-it-works",
"name": "Lines that step across",
"shape": "statement",
"tags": [
"type-led",
"poster"
],
"directions": [
"type-only-statement",
"sentence-as-layout",
"loud-flat-poster",
"editorial-report",
"borrowed-category"
],
"needs": [],
"blueprint": "The sequence is written, not counted. Four lines of display type, one stage per line, each a complete short clause that begins with its order word: 'First you send it.' 'Then we take it apart.' 'You choose one.' 'It ships on Friday.' Set at clamp(36px, 4.6vw, 76px), leading 1.0, one line each. The first line starts on column 1 and each following line starts two columns further right (grid-column-start 1, 3, 5, 7), so the block descends as a staircase and the eye follows the diagonal. Under each line, on that line's own left edge and 12px below, a sentence of up to 34ch at 17px in the soft ink. 56px between stages. The last line may take the accent colour as the single emphasis. The first line serves as the heading; there is no title above. Leave the columns to the left of the final stage empty.",
"mobile": "Lines drop to 8.4vw and may wrap onto a second line. The staircase becomes a smaller indent of 6vw per stage, so the fourth line starts 18vw in. Each sentence sits under its line at 16px on the same indent. 40px between stages.",
"seenIn": [
"opl-rendez-vous-franceclat"
]
},
{
"id": "how-it-works-photographs-down-a-diagonal",
"role": "how-it-works",
"name": "Photographs down a diagonal",
"shape": "stack",
"tags": [
"photo-led",
"quiet"
],
"directions": [
"uneven-photographs",
"place-carries-it",
"dark-room"
],
"needs": [],
"blueprint": "Three stages, three photographs of different sizes placed along a falling diagonal on the 12-column grid. Stage one: a 3:4 portrait in columns 1–4. Stage two: a 1:1 square in columns 6–8, its top edge 220px lower than the first photograph's top. Stage three: a 16:10 landscape in columns 8–12, starting 180px below the bottom of the second. Each stage's text sits in the gap the stagger leaves: a paragraph of up to 36ch at 17px, top-aligned with its photograph and placed in the columns to its right (to its left for the third). Each paragraph opens with a bold run-in phrase that carries the order: 'On the first day', 'A week later', 'By the end'. Square corners; no arrows or connecting marks. The heading, two to four words at clamp(36px, 4vw, 64px) in a light weight, sits alone in columns 7–12 at the very top, level with the first photograph's top edge.",
"mobile": "The diagonal becomes alternating widths: the first photograph at 100%, the second at 62% flush right, the third at 78% flush left. Each paragraph follows its photograph on that photograph's left edge at 16px. 56px between stages. The heading sits above at 30px.",
"seenIn": [
"opl-fynza",
"opl-the-queue"
]
},
{
"id": "how-it-works-drag-row-of-moments",
"role": "how-it-works",
"name": "Drag row of moments",
"shape": "carousel",
"tags": [
"photo-led"
],
"directions": [
"contact-sheet",
"place-carries-it",
"uneven-photographs",
"page-is-the-object",
"dark-room"
],
"needs": [],
"blueprint": "A story told left to right. Top row: the heading, two to four words at 28–36px, at the left margin; at the right margin two solid square buttons, 48px each, for back and forward. Directly beneath, a solid bar 6px tall spans the full width in a soft tone, with a full-ink segment showing how far the row has been scrolled. Then the row itself: six to nine columns, each 280px wide with 32px gaps, in a horizontally scrolling flex container with scroll-snap that bleeds off both viewport edges. Every column reads top to bottom: a one-line caption at 18px bold that carries the order in words ('We met', 'Two winters on', 'The move'), three lines at 15px in the soft ink, then 80–140px of empty space that varies per column, then a 4:5 portrait photograph. Because the spaces vary, the photographs' top edges rise and fall along the row.",
"mobile": "Columns are 72vw wide with 16px gaps, so the next one always shows at the right edge. The buttons are dropped; the 6px progress bar stays under the heading. The empty space inside columns shrinks to 32–64px but still varies from column to column.",
"seenIn": [
"opl-sarah-matt-wedding",
"aww-no-art"
]
},
{
"id": "how-it-works-pinned-fragment-changing-state",
"role": "how-it-works",
"name": "Pinned fragment, changing state",
"shape": "pinned",
"tags": [
"ui-led",
"quiet"
],
"directions": [
"product-performs",
"quiet-instrument",
"split-stage",
"pinned-poster"
],
"needs": [
"product-ui"
],
"blueprint": "Two columns. Right, columns 7–12: a stage that is position: sticky; top: 14vh, holding one fragment of the real interface at true size on a single flat stage colour, about 520px square. Left, columns 1–5: three statements, each in its own block 80vh tall, so one is in view at a time. A statement is a two-line sentence at 28–32px that begins with its order word ('Paste a link.', 'Then pick the parts you want.', 'Share it when it looks right.') plus one supporting line at 16px. The statement nearest the viewport's centre is in full ink; the others sit at 30%. As each statement becomes active the fragment changes to the matching state: an empty field, a filled list with two rows selected, a finished result with its confirmation. Build the states in HTML and switch a class; do not swap screenshots. The heading, two to four words at 24–28px, sits above the first statement.",
"mobile": "The stage is sticky at the top, 46svh tall, the fragment fitted by cropping to its active region, not by shrinking its text. Statements scroll beneath it in blocks 60svh tall at 22px. The stage releases after the third statement.",
"seenIn": [
"opl-juggle",
"aww-cerebrium",
"opl-vessa"
]
},
{
"id": "how-it-works-itinerary-on-a-slip",
"role": "how-it-works",
"name": "Itinerary on a slip",
"shape": "table",
"tags": [
"object-led",
"type-led"
],
"directions": [
"page-is-the-object",
"type-only-statement",
"split-stage",
"quiet-instrument",
"borrowed-category"
],
"needs": [],
"blueprint": "The process is printed as an itinerary or receipt. One paper-coloured slip 420–480px wide stands on a contrasting flat ground at columns 7–11; its bottom edge is a zigzag cut with clip-path and its top edge is straight. The heading, two to four words at clamp(40px, 4.4vw, 68px), sits in columns 1–5 with a 30ch paragraph, top-aligned with the slip. On the slip, in the text face at 16px with tabular figures: stages grouped under time headings that carry the order ('Monday', 'Midweek', 'Friday'), each heading in bold with 28px above it. Under a heading, two to four rows; each row has what happens on the left, a duration or time on the right, and a leader of round 4px dots between. The final row is inverted, paper-coloured text on a full-width ink bar 44px tall, and states the result: what the reader holds at the end and the total time.",
"mobile": "The heading and paragraph come first. The slip follows at full width minus 16px margins, keeping its zigzag bottom edge. Rows keep left text, dots and right value on one line; long descriptions wrap under the left text. The inverted final row stays full width.",
"seenIn": [
"opl-the-content-architecture",
"opl-lennys-newsletter-product-pass"
]
},
{
"id": "how-it-works-accordion-of-tinted-panels",
"role": "how-it-works",
"name": "Accordion of tinted panels",
"shape": "strip",
"tags": [
"colour-field",
"poster"
],
"directions": [
"colour-chapters",
"one-motif",
"loud-flat-poster",
"dense-tiles",
"borrowed-category"
],
"needs": [],
"blueprint": "A two-column introduction, then one horizontal accordion. Introduction: the heading, two to four words at clamp(36px, 4vw, 60px), in columns 1–5; one paragraph at 18px in columns 7–11. 64px below, a flex row across columns 1–12, 520px tall, of four to six panels with no gaps. The open stage is a panel taking about 58% of the width; the rest are vertical slivers sharing what remains. Order is carried by colour: the first stage is the darkest tone of one hue and each later stage is a lighter flat tint of it, so the row reads dark to light from left to right. A sliver shows only its stage name, rotated 90 degrees and reading upward, at 20px bold, anchored to its bottom-left. The open panel shows the name at 40px top-left, a 36ch paragraph at 18px bottom-left and, optionally, one photograph in its right half. Clicking a sliver opens it (flex-basis transition, 450ms).",
"mobile": "The accordion turns vertical: stages stack at full width as bars 64px tall in the same dark-to-light order, names set horizontally at 18px. The open stage expands to its content height with the paragraph at 17px. The first stage is open by default.",
"seenIn": [
"aww-white-desert"
]
},
{
"id": "how-it-works-tiles-that-grow",
"role": "how-it-works",
"name": "Tiles that grow",
"shape": "grid",
"tags": [
"object-led",
"colour-field"
],
"directions": [
"specimen-catalogue",
"hero-object",
"colour-chapters",
"one-motif",
"dense-tiles"
],
"needs": [],
"blueprint": "Order is carried by size. Three flat colour tiles stand in one row, bottom-aligned (align-items: end) with 10px gaps, each larger than the one before: columns 1–3 at 30vh tall, columns 4–7 at 44vh, columns 8–12 at 60vh. Each tile holds one photograph of the subject at that stage (raw, in progress, finished), centred and scaled so the object grows from tile to tile; on light tiles mix-blend-mode: multiply removes a white studio background. One palette colour per tile. Text sits under the tiles, outside them, aligned to each tile's left edge: a stage name at 20px medium whose wording carries the order ('Picked', 'Pressed', 'Poured') and two lines at 16px in the soft ink. The heading, two to four words at 40–52px, occupies the empty ground above the two smaller tiles, top-aligned with the tallest tile. A fourth stage is possible with spans of 2, 3, 3 and 4 columns.",
"mobile": "Tiles stack in order and grow in height instead: 34vw, 46vw and 62vw tall, each at full width. The name and text sit under each tile at 18px and 16px. The heading comes first at 30px. 28px between stages.",
"seenIn": [
"aww-aspen-search",
"aww-noho"
]
},
{
"id": "how-it-works-run-in-column",
"role": "how-it-works",
"name": "Run-in column",
"shape": "list",
"tags": [
"quiet",
"type-led"
],
"directions": [
"quiet-instrument",
"name-as-monument",
"editorial-report",
"contact-sheet",
"split-stage",
"product-performs"
],
"needs": [],
"blueprint": "The quietest sequence: one reading column and good typography. A single column 520–600px wide starts at about 30% of the viewport width (or sits on the page's text axis). The heading is a two-to-five-word question or statement at 28–32px, 48px above the first paragraph. Three to five paragraphs follow at 17–18px with line-height 1.6. Each opens with a bold run-in phrase in full ink that names its moment ('To begin,', 'Within a day,', 'After that,', 'From then on,') while the rest of the paragraph runs in the soft ink; there are no subheads, bullets or markers. After each paragraph, 20px lower, comes one small piece of evidence exactly as wide as the column: a cropped interface fragment, a photograph at 16:9, or a row of three small frames 96px tall. 72px separates stages. Nothing in the section is wider than the column, and the space to its left stays empty.",
"mobile": "The column fills the width between 20px margins. Type stays at 17px. Evidence pieces keep the column width; the row of three frames becomes a single sideways-scrolling row 88px tall. 56px between stages. The heading drops to 24px.",
"seenIn": [
"opl-the-queue",
"opl-rows",
"opl-dialkit"
]
},
{
"id": "how-it-works-many-into-one",
"role": "how-it-works",
"name": "Many into one",
"shape": "band",
"tags": [
"colour-field",
"dense"
],
"directions": [
"one-motif",
"dense-tiles",
"editorial-report",
"borrowed-category"
],
"needs": [],
"blueprint": "A diagram drawn with one repeated shape instead of arrows. The heading (two to four words on two lines at clamp(36px, 4vw, 60px)) and a short paragraph at 17px sit in columns 1–4. Beneath, a wide inline SVG spans columns 1–12 at about 4.5:1. It is built from 120–160 small filled squares (or the page's own motif), each 10–14px. In the left third they are scattered loosely in two pale tones. In the middle third they are pulled into a tight horizontal ribbon three squares high. In the right third they fan out again into neat, evenly spaced rows in the accent colour. The eye reads disorder, compression, order, from left to right. Under the diagram, three text columns aligned to its thirds: a bold one-word name at 20px and two lines at 16px each; the words carry the sequence ('Gather', 'Reduce', 'Release'). No connecting marks.",
"mobile": "The diagram turns to run top to bottom: a 3:4 SVG with the scatter at the top, the ribbon as a vertical band in the middle and the ordered rows at the bottom. The three names and their text sit to its right in a 38vw column, each level with its zone.",
"seenIn": [
"opl-wild-as",
"opl-shelf"
]
},
{
"id": "how-it-works-one-verb-at-a-time",
"role": "how-it-works",
"name": "One verb at a time",
"shape": "full-bleed",
"tags": [
"photo-led",
"poster"
],
"directions": [
"pinned-poster",
"loud-flat-poster",
"dark-room",
"hero-object",
"sentence-as-layout",
"place-carries-it"
],
"needs": [],
"blueprint": "Three to five full-bleed panels, each 100svh tall, stacked with no gap; each is one stage and holds one photograph covering it. In every panel a single word, the verb for that stage ('Cut', 'Fold', 'Stitch', 'Press'), is set at clamp(96px, 17vw, 300px), heavy and centred, inside a wrapper that is position: sticky; top: 50% and shifted up by half its own height. Because each word is sticky only within its own panel, it holds the centre of the screen while its photograph passes behind it, and is then pushed out by the next panel's verb. Use mix-blend-mode: difference in white, or one solid colour tested on every image. One sentence at 18px sits in the bottom-left corner of each panel over a neutral scrim limited to that corner. There is no separate heading: the verbs, read in order, are both the heading and the sequence.",
"mobile": "Panels stay 100svh, each photograph cropped to a vertical slice. The verb is 24vw, still sticky at the centre. The sentence sits along the bottom over a scrim at 16px, full width with 16px margins.",
"seenIn": [
"opl-eagles-nest",
"aww-seasats",
"aww-vero-new-york"
]
},
{
"id": "stats-one-figure-owns-the-screen",
"role": "stats",
"name": "One figure owns the screen",
"shape": "statement",
"tags": [
"type-led",
"poster"
],
"directions": [
"type-only-statement",
"editorial-report",
"colour-chapters",
"loud-flat-poster",
"borrowed-category",
"pinned-poster"
],
"needs": [],
"blueprint": "One number, one screen. A flat field at least 90svh tall. At the top-left, starting on the page's main axis, a one-line claim of two to five words at 36–44px: this is the heading. Then a long gap of 22–28vh. At the bottom-left on the same edge, a single figure at clamp(180px, 23vw, 380px), leading 0.8, tight tracking, with its unit (a percent sign, 'x', 'hrs') set as a superscript one third of the figure's size and aligned to the figure's cap height. Directly beneath, flush with the figure's left edge, a caption of three lines at 16–17px, 32ch wide, saying exactly what was measured and when. The right half of the field stays empty; resist filling it. The figure is static text in lining numerals and does not animate. A source line, if needed, sits at the bottom-right at 15px.",
"mobile": "The claim sits at the top at 28px. The figure is 46vw, flush left, with its superscript unit; if it has four characters or more, drop it to 34vw so it stays on one line. The caption follows at 16px across 80% of the width. Minimum height 80svh.",
"seenIn": [
"opl-the-state-of-software-delivery-in-health",
"opl-the-content-architecture"
]
},
{
"id": "stats-figures-inside-a-sentence",
"role": "stats",
"name": "Figures inside a sentence",
"shape": "statement",
"tags": [
"type-led",
"quiet"
],
"directions": [
"sentence-as-layout",
"type-only-statement",
"dark-room",
"editorial-report"
],
"needs": [],
"blueprint": "The numbers are written into prose and the prose is set at display size. One paragraph of two or three sentences, 22–34 words, containing three or four true figures, in the pattern 'Since 2014 we have rebuilt 340 roofs in 9 towns, and 312 of them have never leaked.' Set at clamp(32px, 4.4vw, 72px), leading 1.12, in columns 2–11, left-aligned and vertically centred in a section of 80–90svh with nothing else in it. Words are in the soft ink at regular weight; the figures alone are in full ink (or the accent) at the same size, in lining numerals, with non-breaking spaces binding each figure to its unit. No boxes, underlines or colour chips behind the figures. A visually hidden two-word heading names the section for structure; to the eye the paragraph stands alone. On a deep ground use a light weight and a soft light ink, with the figures in the brightest ink.",
"mobile": "The paragraph is 7.4vw with leading 1.2, at full width between 20px margins, vertically centred in 70svh. Keep each figure and its unit together on one line with non-breaking spaces. Nothing else appears in the section.",
"seenIn": [
"aww-made-with-gsap-1",
"aww-united-carriers"
]
},
{
"id": "stats-column-aligned-on-the-decimal",
"role": "stats",
"name": "Column aligned on the decimal",
"shape": "table",
"tags": [
"type-led",
"dense"
],
"directions": [
"editorial-report",
"type-only-statement",
"page-is-the-object",
"contact-sheet",
"product-performs",
"sentence-as-layout"
],
"needs": [],
"blueprint": "A tall column of figures set like a ledger. Left, columns 1–5: the heading as a statement of up to five words on two lines at clamp(32px, 3.2vw, 52px), its first line in the soft ink and its second in full ink, placed at mid-height. Right, columns 7–12: four to six figures stacked, each at clamp(64px, 7vw, 112px), leading 1.0, in tabular lining numerals. They align on the decimal point: each row is a three-part grid in which the whole-number part is right-aligned in the first track, the point and decimals are left-aligned in the second, and a caption of one or two lines at 16px sits in the third, on the figure's baseline. Whole numbers simply leave the second track empty. Rows are separated by 20px of space only. Units are written in the captions, not attached to the figures, so the numerals form one clean vertical shape.",
"mobile": "The heading comes first at 28px. Figures drop to 15vw and keep the decimal alignment, with the split at 52% of the width. Each caption moves under its figure at 15px, starting from the left margin. 28px between rows.",
"seenIn": [
"aww-united-carriers",
"aww-moto-finance"
]
},
{
"id": "stats-photograph-with-figure-tiles",
"role": "stats",
"name": "Photograph with figure tiles",
"shape": "mosaic",
"tags": [
"colour-field",
"photo-led"
],
"directions": [
"editorial-report",
"colour-chapters",
"dense-tiles",
"split-stage",
"specimen-catalogue"
],
"needs": [],
"blueprint": "A mosaic without gutters spanning the full width, about 66vw tall in total. A single photograph fills the left two-thirds at roughly 1:1 with object-fit: cover and square corners. The right third is split into two stacked flat colour tiles of equal height, in two palette colours that differ clearly in lightness as well as hue. Each tile carries one figure at clamp(56px, 5.6vw, 96px) in its top-left corner, 28px in from the edges, with a two-line caption at 17px directly beneath it; the rest of the tile is empty colour, which is the point. Photograph and tiles touch, with no gaps and no rounding. The heading, two to four words at 32–40px, sits above the mosaic's left edge with 40px beneath, or is left out when the section follows a text page whose title already introduces it. Never add a third tile; with three figures choose another layout.",
"mobile": "The photograph comes first, full-bleed at 4:3. The two colour tiles follow side by side as squares, each 50vw, with the figure at 13vw top-left and the caption at 15px beneath. No gaps between any of the three pieces.",
"seenIn": [
"aww-ai-in-design-report-2026"
]
},
{
"id": "stats-stepped-figure-tiles",
"role": "stats",
"name": "Stepped figure tiles",
"shape": "grid",
"tags": [
"colour-field",
"dense"
],
"directions": [
"dense-tiles",
"one-motif",
"loud-flat-poster",
"colour-chapters",
"specimen-catalogue",
"borrowed-category"
],
"needs": [],
"blueprint": "Three figures on three tiles that refuse to line up. A tall tile in the accent colour fills columns 1–6 and is 70vh high; it holds one figure at clamp(56px, 5.4vw, 92px) in its top-left corner, 28px in, and its caption at 17px in its bottom-left corner, with empty colour between. On the right, an ink-coloured tile in columns 7–9 starts 14vh lower and is 44vh high: a paper-coloured figure top-left, a caption along its bottom edge. A third tile in a mid tone takes columns 10–12, starts 26vh down and is 34vh high, with the same internal layout. Gaps are 8px. The unequal heights leave notches of bare ground above and below the right-hand tiles; the heading, two to four words at 28–36px, sits in the upper notch on column 7. If the page has a motif, cut one corner of each tile to its geometry with clip-path.",
"mobile": "The tall tile comes first, at full width and 56vw high, with its figure at 15vw. The two smaller tiles follow side by side with a 6px gap, the right one starting 32px lower than the left, each with its figure at 11vw and its caption at the bottom. The heading sits above at 26px.",
"seenIn": [
"aww-aspen-search"
]
},
{
"id": "stats-total-and-its-receipt",
"role": "stats",
"name": "Total and its receipt",
"shape": "split",
"tags": [
"object-led",
"type-led"
],
"directions": [
"page-is-the-object",
"product-performs",
"borrowed-category",
"type-only-statement"
],
"needs": [],
"blueprint": "A total at giant size, and beside it the slip that adds up to it. Left, columns 1–6: at the top the heading, two to five words at 40–44px, with a two-line note at 16px; at the bottom-left, anchored to the section's lower edge, the total at clamp(160px, 18vw, 300px) with leading 0.8, and one caption line at 17px under it. The space between heading and total is left empty. Right, columns 8–11: a paper-coloured slip 380–440px wide on the section's contrasting ground, top-aligned with the heading, its bottom edge a zigzag made with clip-path. The slip lists eight to fourteen rows in the text face at 15–16px with tabular numerals, grouped under bold group names; each row has a description on the left, a right-aligned value, and a leader of round 4px dots between. The last row is inverted on a solid ink bar and repeats the total. The slip's values must truly sum to the figure.",
"mobile": "Heading and note come first. The total follows at 40vw, flush left, with its caption. The slip comes last at full width minus 16px margins with its zigzag edge, rows at 15px, and the inverted total row closing it.",
"seenIn": [
"opl-the-content-architecture"
]
},
{
"id": "stats-figure-on-the-photographs-edge",
"role": "stats",
"name": "Figure on the photograph's edge",
"shape": "full-bleed",
"tags": [
"photo-led",
"poster"
],
"directions": [
"place-carries-it",
"dark-room",
"hero-object",
"pinned-poster"
],
"needs": [],
"blueprint": "One full-bleed photograph, 100vw by 88svh, and one figure set on it the way a film title sits on a frame. The figure, with its unit, is at clamp(120px, 17vw, 280px), leading 0.8, in paper colour, hugging the bottom-left corner with 24px margins, its baseline nearly on the photograph's lower edge. A neutral dark scrim covers only the bottom 35% of the image for legibility. On the same baseline at the right margin, right-aligned, a sentence of up to 26ch at 18px explains the figure. At the top-left, small at 20–24px, sits the heading of two to four words; the middle of the photograph stays clear. Two smaller supporting figures may follow below the photograph, on the ground: each at 40px with a one-line caption beside it, starting at columns 1 and 7, 40px under the image. Choose a figure that belongs to the picture: a height, a distance, a temperature, a year.",
"mobile": "The photograph is 80svh, cropped to its subject. The figure sits bottom-left at 30vw; the sentence moves above it at 16px, left-aligned. Supporting figures stack under the photograph at 32px, each with its caption on the line beneath.",
"seenIn": [
"aww-the-state-of-the-gallery"
]
},
{
"id": "stats-quiet-figure-lines",
"role": "stats",
"name": "Quiet figure lines",
"shape": "list",
"tags": [
"quiet",
"type-led"
],
"directions": [
"quiet-instrument",
"uneven-photographs",
"split-stage",
"contact-sheet",
"name-as-monument",
"dark-room"
],
"needs": [],
"blueprint": "Numbers stated without raising the voice. In columns 2–7, a definition-list layout: three to five rows, each a two-track grid. The first track is 132px wide and holds the figure, right-aligned, at 28–32px in medium weight and full ink with tabular numerals. The second track, after a 24px gap, holds one sentence at 16–17px in the soft ink, at most 40ch, whose first baseline matches the figure's baseline. Sentences share one left edge and figures one right edge, so a clean channel of space runs down between them. 28px between rows. The heading, two to four words at 24–28px, sits 56px above on the sentences' left edge, not the figures'. Optionally, a single small square photograph occupies columns 9–11, its top 80px lower than the first row, with no caption. Leave at least 18vh of empty ground above and below the block.",
"mobile": "The grid stays two-track, with the figure track narrowed to 88px and figures at 24px; sentences at 16px wrap beside them. If the photograph is used it comes after the rows at 56% width, flush right. The heading is 22px on the sentences' left edge.",
"seenIn": [
"aww-cominvi"
]
},
{
"id": "testimonial-name-block-quote-block",
"role": "testimonial",
"name": "Name block, quote block",
"shape": "split",
"tags": [
"colour-field",
"type-led"
],
"directions": [
"editorial-report",
"colour-chapters",
"dense-tiles",
"loud-flat-poster",
"type-only-statement"
],
"needs": [],
"blueprint": "Two flat blocks butt together across the full width with no gap, about 70svh tall, built as a two-column grid (5fr 7fr) whose cells stretch to equal height. The left block, columns 1–5, is in the page's ink colour and holds only the speaker: name at 20px medium and role at 16px in a softer tone, pinned to the bottom-left corner with 32px padding; the rest of the block is empty. The right block, columns 6–12, is in one palette colour and carries the quotation at clamp(28px, 3vw, 44px), leading 1.15, top-left with 48px padding and a measure of about 24ch, so the lower third of the colour stays empty. Curly quotation marks are part of the text, with the opening mark hung outside the left edge by a negative `text-indent`. There is no heading; the quotation does that job.",
"mobile": "The blocks stack with the colour block first: the quotation at 26px with 24px padding and a clear band of empty colour beneath it. The dark block follows directly, only about 96px tall, with name and role on one line each at the bottom-left. No gap between the two.",
"seenIn": [
"aww-ai-in-design-report-2026"
]
},
{
"id": "testimonial-lead-quote-corner-quotes",
"role": "testimonial",
"name": "Lead quote, corner quotes",
"shape": "statement",
"tags": [
"type-led",
"quiet"
],
"directions": [
"dark-room",
"name-as-monument",
"borrowed-category",
"type-only-statement"
],
"needs": [],
"blueprint": "A single field one viewport tall (min-height 100svh), usually the darkest tone of the palette. The lead quotation sits in the upper third: two lines at about 4vw in a light weight, centred, no wider than 60% of the viewport, with nothing near it. Two further short quotations are pushed into the bottom-left and bottom-right corners, each a block three columns wide set at 16px with leading 1.5, left-aligned, with the speaker's name and role on the two lines beneath in the softer ink. The bottom centre, about six columns wide, is deliberately empty. Use a three-row grid (auto 1fr auto) so the corner blocks hold a bottom margin of 32px while the lead quotation keeps its place at any height. There is no heading and there are no portraits; the contrast between one large voice and two small ones is the composition.",
"mobile": "The lead quotation moves to the top at 8vw over three or four lines, left-aligned, with 96px of empty field under it. The two small quotations then stack at 16px, the first full width, the second indented by a quarter of the screen so they do not read as a list.",
"seenIn": [
"aww-hilden-kaira"
]
},
{
"id": "testimonial-paper-slips",
"role": "testimonial",
"name": "Quotes on paper slips",
"shape": "strip",
"tags": [
"object-led"
],
"directions": [
"page-is-the-object",
"specimen-catalogue",
"borrowed-category",
"loud-flat-poster"
],
"needs": [],
"blueprint": "A heading of two to four words at about 3vw sits top-left in columns 1–6. Beneath it three paper slips fan across columns 2–11 on a contrasting flat ground: each is a filled paper-coloured panel about 300px wide, of three different lengths (440, 520 and 600px), rotated −4, 2 and 5 degrees and overlapping its neighbour by roughly 40px. The top and bottom edges of each slip are zigzag tears cut with `clip-path: polygon()`. On a slip, from the top: the speaker's name centred at 18px bold, the role on one line, a square greyscale photograph of the speaker 120px wide, then the quotation at 16px in the text face, left-aligned with 24px padding. The longest slip runs past the bottom of the section, which clips it with `overflow: hidden`, so the slips look freshly printed rather than laid out as cards.",
"mobile": "One slip per row, each 78% of the screen wide and kept rotated by two or three degrees in alternating directions, the first hugging the left margin, the second the right, each overlapping the one above by 32px. The heading sits above at 8vw on two lines.",
"seenIn": [
"opl-poetry-camera"
]
},
{
"id": "testimonial-quote-over-photograph",
"role": "testimonial",
"name": "Quotation over a photograph",
"shape": "full-bleed",
"tags": [
"photo-led"
],
"directions": [
"place-carries-it",
"dark-room",
"hero-object",
"uneven-photographs"
],
"needs": [],
"blueprint": "One photograph fills the section edge to edge at 100vw by 90svh with `object-fit: cover`; choose a frame with a calm lower half. The quotation is set directly on it in the paper colour: two or three lines at clamp(36px, 5vw, 80px), leading 1.0, flush left in columns 1–9, its last baseline 64px above the bottom edge. The speaker's name and role sit at 16px on that same baseline, right-aligned in columns 10–12. For legibility, darken the whole image evenly with `filter: brightness(0.7)` instead of placing a panel behind the words; the photograph must still read as a photograph. There is no heading, no frame and no oversized quotation-mark ornament, only plain curly quotes in the text. The section butts directly against its neighbours with no margin, so the image edge is the section edge.",
"mobile": "The photograph becomes 100vw by 80svh, cropped to its strongest vertical slice. The quotation sits in the lower half at 9vw over four lines at most, flush left with 20px margins; the name and role follow under it on one line at 15px.",
"seenIn": [
"opl-berd"
]
},
{
"id": "testimonial-gutter-quotes-pinned",
"role": "testimonial",
"name": "Quotes in the gutters",
"shape": "pinned",
"tags": [
"photo-led",
"poster"
],
"directions": [
"pinned-poster",
"hero-object",
"colour-chapters",
"loud-flat-poster"
],
"needs": [],
"blueprint": "A sticky stage (`position: sticky; top: 0; height: 100svh`) inside a wrapper three or four viewports tall. The section's title, two or three words at 10–12vw, stays pinned across the top of the stage. In the centre a portrait photograph, 4:5 and about 30vw wide, changes at each scroll step. Each step also brings one quotation, placed in an outer gutter in a column 280px wide and at a different height each time: right gutter in the upper third, then left gutter at mid-height, then right gutter in the lower third. Quotations are bold at 22px with tight leading; the speaker's name follows at 15px in the softer ink. Only one quotation shows at a time. Each step may switch the stage to its own flat ground colour. Drive the steps with an IntersectionObserver on spacer blocks; never hijack the scroll.",
"mobile": "No pinning. The title sits once at 16vw. Each speaker then gets a block: the portrait at 72% width, flush left and flush right in turn, the quotation at 20px beneath it on the same edge, and the name under that. Leave 72px between blocks.",
"seenIn": [
"opl-city-of-angels"
]
},
{
"id": "testimonial-portrait-offset-quote",
"role": "testimonial",
"name": "Portrait and offset quotation",
"shape": "split",
"tags": [
"photo-led",
"quiet"
],
"directions": [
"split-stage",
"uneven-photographs",
"place-carries-it",
"one-motif",
"editorial-report",
"hero-object"
],
"needs": [],
"blueprint": "A 12-column row on the page ground with wide margins. A portrait of the speaker, 3:4, fills columns 2–5 and is tall, about 70svh; it takes whatever mask the page gives its photographs (square corners, or the page's one motif shape). The quotation occupies columns 7–12 and starts 120px lower than the top of the portrait: four to six lines at clamp(26px, 2.6vw, 40px) in a light or regular weight, leading 1.2, measure about 26ch. The name and role sit 32px beneath the quotation at 16px, on its left edge. A second, small photograph (1:1, columns 10–11) hangs 96px below the attribution and shows the place or the thing the speaker is talking about. There is no heading. Nothing is centred; every edge lands on a column line, and the two vertical offsets are the design.",
"mobile": "The portrait runs at 72% width from the left margin, 3:4. The quotation follows at 24px, full width, starting 32px beneath. Name and role sit under it. The small second photograph sits at 44% width against the right margin, 48px lower, overlapping nothing.",
"seenIn": []
},
{
"id": "testimonial-words-spread-wide",
"role": "testimonial",
"name": "Quotation spread edge to edge",
"shape": "band",
"tags": [
"type-led",
"poster"
],
"directions": [
"sentence-as-layout",
"type-only-statement",
"name-as-monument",
"loud-flat-poster",
"colour-chapters"
],
"needs": [],
"blueprint": "A full-width field with no image. One short quotation, six to ten words, is set at about 9vw in the display face and broken by hand into two or three lines. Each line is a flex row with `justify-content: space-between`, so its first word sits hard against the left margin, its last word hard against the right, and any middle word floats between them. Lines are 0.6em apart, far looser than a headline, which lets the gaps read as pauses. The attribution is spaced the same way on a final row at 18px: name at the left margin, role centred, organisation at the right. Opening and closing quotation marks belong to the first and last words. There is no separate heading. Leave at least 140px of empty field above and below, and give the field its own flat colour when the palette allows.",
"mobile": "Lines break after every two words and keep the spread: one word at each margin, at 13vw. A single-word line alternates between the left and right margins. The attribution stacks as three short lines at 15px, aligned left, centre and right in turn.",
"seenIn": [
"opl-poetry-camera",
"opl-rsquad"
]
},
{
"id": "testimonial-letter-reading-column",
"role": "testimonial",
"name": "One long letter",
"shape": "stack",
"tags": [
"quiet",
"type-led"
],
"directions": [
"quiet-instrument",
"product-performs",
"split-stage",
"editorial-report",
"type-only-statement",
"page-is-the-object"
],
"needs": [],
"blueprint": "A single testimonial given room to be read, set like a letter. One column 34–38ch wide begins at column 5 of 12, or shares the page's own reading column. The first sentence of the quotation is pulled up as the opening line at 28–32px in medium weight, two lines at most. The rest follows as two or three ordinary paragraphs at 18–19px with leading 1.55 and 20px between paragraphs, in the full ink, not grey. It closes the way a letter does: 40px of space, then the name on one line and the role on the next at 16px. In columns 1–3, top-aligned with the first line, sits either nothing or one small square photograph of the writer, 120px wide. There are no quotation marks at all; the letter form makes them unnecessary. Space above and below is 140px.",
"mobile": "The column takes the full width with 20px margins. If there is a photograph it goes first at 96px square, left-aligned. Opening sentence at 24px, body at 17px, sign-off beneath. Nothing else changes; this section is already a phone composition.",
"seenIn": []
},
{
"id": "testimonial-shallow-portrait-bands",
"role": "testimonial",
"name": "Shallow portraits, small quotes",
"shape": "grid",
"tags": [
"dense",
"photo-led"
],
"directions": [
"contact-sheet",
"dense-tiles",
"quiet-instrument",
"product-performs"
],
"needs": [],
"blueprint": "Speakers are shown as wide, shallow crops rather than headshots. A two-word heading at 15px sits in columns 1–2, top-aligned with the frames, not above them. In columns 3–12 three frames sit side by side with 8px gaps at unequal widths (4, 3 and 3 columns), all exactly 110px tall: each is a photograph of the person cropped with `object-fit: cover` to a band across the eyes and shoulders. Directly under each frame, on its left edge, come the name in the brighter ink and the role in the softer ink on one line at 15px, then the quotation at the same 15px over three to five lines, no wider than its frame. Everything shares one type size; hierarchy comes from ink alone. If interview clips exist, each frame can be the poster of its clip, but the section must work with stills.",
"mobile": "Frames go full width one after another, each 84px tall, with its name, role and quotation at 15px beneath and 40px before the next. The heading leads as a plain line at the same size, in the brighter ink, 24px above the first frame.",
"seenIn": [
"aww-oimachi"
]
},
{
"id": "proof-names-run-on-sentence",
"role": "proof",
"name": "Names as one sentence",
"shape": "statement",
"tags": [
"type-led",
"poster"
],
"directions": [
"type-only-statement",
"sentence-as-layout",
"name-as-monument",
"dark-room",
"loud-flat-poster"
],
"needs": [],
"blueprint": "Client, press or partner names are written out as one run-on sentence and set large: clamp(40px, 5vw, 76px), leading 1.0, flush left across all twelve columns, wrapping naturally over five to seven lines. Names are separated by commas and the list ends with a full stop. All names are set in a dimmed ink (still at least 3:1 against the ground), so the block reads as texture; one name at a time is lit in the full ink, and the lit name moves through the list every two seconds (a class toggled by a short script, with a 400ms colour transition). The sentence opens with two or three plain words in the full ink that act as the heading: the phrase that introduces the names. Nothing else is in the section: no logos, no columns, and 120px of space above and below.",
"mobile": "The same sentence at 9vw, wrapping over ten to fourteen lines; cut the list to the twelve strongest names so it stays within one and a half screens. The lit name still cycles. Margins are 20px and there are no other elements.",
"seenIn": [
"aww-revelatio-studio"
]
},
{
"id": "proof-plain-columns",
"role": "proof",
"name": "Plain names in columns",
"shape": "list",
"tags": [
"quiet",
"type-led"
],
"directions": [
"quiet-instrument",
"contact-sheet",
"editorial-report",
"split-stage",
"uneven-photographs",
"place-carries-it"
],
"needs": [],
"blueprint": "A typographic list with no logos. The heading, two or three words at 28–32px, sits in columns 1–3 and stays top-aligned with the first row of names. Columns 5–12 hold the names in three or four text columns (`columns: 4; column-gap: 32px`), each name on its own line at 20–22px with leading 1.5, sentence case, in the full ink. Where names fall into kinds (clients, press, partners), each kind starts a new column and its first line names the kind in the softer ink at the same size, so no small labels are needed. Columns are of unequal length and are not balanced; ragged bottoms are intended. Twelve to thirty names work best. There are no boxes, bullets or separators: the column edges and the shared baseline do the organising. Leave 120px above and below.",
"mobile": "The heading leads at 26px. Names follow in two columns at 17px with a 20px gap; each kind begins after a 32px break with its name in the softer ink on the first line. Long names wrap inside their column rather than shrinking.",
"seenIn": [
"opl-ayush-halder-portfolio"
]
},
{
"id": "proof-single-logo-row",
"role": "proof",
"name": "One quiet logo row",
"shape": "strip",
"tags": [
"quiet"
],
"directions": [
"product-performs",
"quiet-instrument",
"hero-object",
"dark-room",
"place-carries-it",
"split-stage",
"uneven-photographs"
],
"needs": [],
"blueprint": "Only for real logos supplied by the project; if none are supplied, set the names in the text face at 22px in the same row and never draw stand-ins. The row reads as a sentence: it opens at the left margin with two to four plain words at 18px (the phrase that introduces the names), vertically centred on the logos, and five to seven logos follow on the same line, spread to the right margin with `justify-content: space-between`. Every logo is normalised to one optical height (28–32px for wordmarks, 36px for compact marks) and one colour, the page ink, using single-colour SVGs with `fill: currentColor`. The band is tall and almost empty: 120–150px of ground above and below the row, no box, no background change and no separate heading. Logos stay still; nothing scrolls or fades at the edges.",
"mobile": "The opening words sit alone on the first line at 17px. Logos follow in a grid of two per row, each 26px tall and left-aligned in its cell, with 36px between rows. Show six at most; there is no sideways scrolling.",
"seenIn": [
"aww-ai-in-design-report-2026",
"aww-lama-lama-2",
"opl-mammut-studios"
]
},
{
"id": "proof-recognition-table",
"role": "proof",
"name": "Recognition as a table",
"shape": "table",
"tags": [
"type-led",
"dense"
],
"directions": [
"editorial-report",
"type-only-statement",
"contact-sheet",
"borrowed-category",
"name-as-monument",
"quiet-instrument"
],
"needs": [],
"blueprint": "Awards, press mentions or credits set as a four-column table with no lines. The heading is two or three words at about 5vw, stepped over two lines with the second line indented by two columns, and occupies columns 1–7. The table begins 72px below and spans columns 1–12 on a fixed grid: year in columns 1–2, project or title in 3–6, awarding body or publication in 7–10, the award itself in 11–12, right-aligned. Rows are set at 16–17px with 14px of padding above and below; every second row carries a background tone one step from the ground, running the full table width, which replaces rules. Year groups are separated by one blank row, and the year is printed only on the first row of its group. Use a real `
` with `border-collapse: collapse` and no borders.",
"mobile": "The heading drops to 11vw. Each table row becomes a two-line block: title on the first line in the full ink, then body and award on the second in the softer ink. The year stands once as a 22px figure above its group. Alternate blocks keep the background tone.",
"seenIn": [
"aww-bleibtgleich26"
]
},
{
"id": "proof-large-marks-on-tiles",
"role": "proof",
"name": "Large marks on tiles",
"shape": "grid",
"tags": [
"dense",
"colour-field"
],
"directions": [
"dense-tiles",
"specimen-catalogue",
"colour-chapters",
"one-motif",
"product-performs",
"loud-flat-poster"
],
"needs": [],
"blueprint": "A board of filled tiles, four across and two or three rows deep, with 8px gaps, spanning the full content width. Each tile is about 3:2, one step lighter or darker than the page ground, with no border. A tile holds one supplied logo, shown far larger than a usual logo strip: about 72px tall, centred, in the page ink as a single-colour SVG. When no logo files exist, the tile holds the name instead, set at 28–32px bold, top-left with 24px padding; never draw a mark. One tile, twice the width of the others and placed first, is in the accent colour and carries the heading: two to four words at about 3vw, top-left. Tile corners follow the page's one radius, or the page's motif shape if it has one. Tiles sit still; there is no hover lift.",
"mobile": "Two tiles per row with 6px gaps, logos at 44px tall. The heading tile runs full width first, about 120px tall. Show eight tiles at most so the board stays under one and a half screens. Names set in type drop to 20px.",
"seenIn": [
"aww-monolog"
]
},
{
"id": "proof-printed-guest-list",
"role": "proof",
"name": "The printed guest list",
"shape": "stack",
"tags": [
"object-led",
"type-led"
],
"directions": [
"page-is-the-object",
"borrowed-category",
"specimen-catalogue",
"place-carries-it",
"loud-flat-poster"
],
"needs": [],
"blueprint": "Names are printed on a card, the way a programme lists its patrons or an invitation its hosts. On a contrasting flat ground, a paper-coloured panel about 56% of the viewport wide with 5:7 proportions sits centred and rotated by one or two degrees; the section is shorter than the card and clips it with `overflow: hidden`, so the card is cut by the bottom edge rather than framed whole. Inside, 56px padding. At the top, a centred heading of two to four words at 28px. Below it the names run as centred lines at 20–22px with leading 1.7, several names to a line, separated by middots with a non-breaking space either side. One photograph may be tipped in between the heading and the names: 16:9, the full inner width, square corners. The card is a plain filled shape with no outline.",
"mobile": "The card becomes 92% of the screen wide, keeps a one-degree tilt and is still cut off by the section's bottom edge. Heading at 22px, names at 17px with two names to a line. Padding drops to 28px, and the tipped-in photograph keeps the full inner width.",
"seenIn": [
"opl-hebbia"
]
},
{
"id": "proof-names-off-both-edges",
"role": "proof",
"name": "Names running off the edges",
"shape": "band",
"tags": [
"type-led",
"poster"
],
"directions": [
"pinned-poster",
"loud-flat-poster",
"name-as-monument",
"borrowed-category",
"hero-object",
"colour-chapters"
],
"needs": [],
"blueprint": "A full-bleed band in a flat colour, about 34vh tall, holding a single line of names that is cropped by both viewport edges. The names are set at 8vw in the display weight, `white-space: nowrap`, separated by a solid round dot one third of the cap height, and the line moves slowly to the left (a CSS `translateX` animation over 40 seconds on a duplicated track, paused under `prefers-reduced-motion`). The band has no heading. Its meaning comes from one sentence at 18px set directly below the band at the left margin on the page ground, stating plainly who these names are. Supplied logos may replace names if all are available as single-colour SVGs at 0.8em height; do not mix logos and set names in one line. The band butts against the sections above and below with no gap.",
"mobile": "The band is 22vh tall with names at 15vw, still cropped at both edges and still moving. The explaining sentence sits under it at 16px with 20px margins. Do not add a second line running the opposite way; one line is the idea.",
"seenIn": [
"aww-made-with-gsap-1"
]
},
{
"id": "pricing-price-as-display-figure",
"role": "pricing",
"name": "The price, very large",
"shape": "split",
"tags": [
"type-led",
"object-led"
],
"directions": [
"product-performs",
"hero-object",
"name-as-monument",
"one-motif",
"dark-room",
"type-only-statement"
],
"needs": [],
"blueprint": "One plan, no card. Columns 1–4 hold a heading of two to four words at 28–36px and one paragraph at 17px, top-aligned. Columns 6–12 hold the price as a display figure: numerals at clamp(120px, 16vw, 240px), tight tracking, leading 0.85, with the currency sign at half that size raised to the cap line and the period (per month, once) at 18px beside the last numeral on the baseline. One thing from the page overlaps the numerals by 10–15% of their height: the product photograph, the interface fragment or the motif shape, placed over the top-right of the figure. Beneath the figure, on its left edge, four plain lines at 18px state what is included, one per line, without ticks or bullets, then a single rectangular button. The section is at least 80svh tall with the figure vertically centred.",
"mobile": "The heading and paragraph come first, full width. The figure follows at 34vw, flush left, with the overlapping object tucked at its top-right corner at a third of the screen wide. Included lines at 17px and a full-width button close the block.",
"seenIn": [
"opl-dabbit"
]
},
{
"id": "pricing-large-typographic-table",
"role": "pricing",
"name": "Plans as a large table",
"shape": "table",
"tags": [
"type-led",
"dense"
],
"directions": [
"type-only-statement",
"editorial-report",
"dense-tiles",
"product-performs",
"contact-sheet"
],
"needs": [],
"blueprint": "Two to four plans compared in a table whose type is far larger than a table usually gets. The first column (columns 1–4) lists what is compared, in words, at 22px. Each plan takes an equal share of columns 5–12. The header row gives each plan's name at about 3vw bold, left-aligned, with its price directly beneath at the same size in the regular weight and the period at 16px. Body rows are 22px with 20px padding; cells answer in words or numbers (“Unlimited”, “3 seats”, “Not included”), never with ticks. Every second row has a background tone one step from the ground, spanning all columns. The recommended plan is marked only by its whole column sitting on the accent tone from header to last row. The final row holds one rectangular button per plan. A two-to-four-word heading sits in the top-left cell.",
"mobile": "Plans stack as separate blocks. Each opens with the plan name and price at 9vw, then its rows as pairs: the compared item in the softer ink, the answer beneath in the full ink, both at 17px. The recommended plan's block sits on the accent tone. A full-width button ends each block.",
"seenIn": []
},
{
"id": "pricing-one-sentence-price",
"role": "pricing",
"name": "One plan as a sentence",
"shape": "statement",
"tags": [
"type-led",
"poster"
],
"directions": [
"sentence-as-layout",
"type-only-statement",
"loud-flat-poster",
"name-as-monument",
"colour-chapters"
],
"needs": [],
"blueprint": "The whole offer is one sentence of five to seven short words that contains the price, set at 8–9vw across the full width on two lines, leading 0.95, flush left; it replaces any heading. The price is not styled as a different word. Instead it sits on a filled block of the accent colour exactly one line-height tall with 0.15em of padding at each side, so the figure reads as an object in the line. Below, on one shared baseline 64px under the sentence: a supporting sentence at 20px in columns 1–6 saying what the price includes, and one rectangular button right-aligned in columns 10–12. If a second option exists (annual, team), it is a plain text link under the button, not a second panel. The section is one flat colour field at least 80svh tall.",
"mobile": "The sentence is set at 11vw on two lines, with the price block on a line of its own between them, as wide as its figure. The supporting sentence follows at 17px, then a full-width button, then the text link for the second option.",
"seenIn": []
},
{
"id": "pricing-two-plans-two-fields",
"role": "pricing",
"name": "Two plans, two fields",
"shape": "split",
"tags": [
"colour-field",
"poster"
],
"directions": [
"colour-chapters",
"loud-flat-poster",
"borrowed-category",
"one-motif",
"editorial-report",
"split-stage"
],
"needs": [],
"blueprint": "Two plans stand side by side as two full-height colour fields that meet at a hard vertical edge with no gap: the left field spans columns 1–5, the right 6–12, both 90svh tall and bleeding to the viewport edges. Each field has its own flat colour and its assigned text colour. Inside each, on a shared grid: the plan name at about 5vw top-left with 40px padding; one sentence at 20px beneath it, no wider than 26ch, saying who the plan is for; then, anchored to the bottom-left, the price at about 10vw with the period at 18px beside it; and a rectangular button anchored bottom-right on the price's baseline. What is included is written as a short paragraph, not a tick list. The unequal widths say which plan matters more without any badge. No heading spans the two fields.",
"mobile": "The fields stack, each 70svh tall, the more important plan first. Name at 12vw top-left, sentence beneath, price at 24vw at the bottom-left, and the button full width along the bottom edge inside 20px padding. The hard colour edge between the two is kept.",
"seenIn": []
},
{
"id": "pricing-menu-list",
"role": "pricing",
"name": "Prices like a menu",
"shape": "list",
"tags": [
"quiet",
"type-led"
],
"directions": [
"page-is-the-object",
"place-carries-it",
"split-stage",
"uneven-photographs",
"quiet-instrument",
"specimen-catalogue",
"dark-room"
],
"needs": [],
"blueprint": "Prices set the way a good menu sets them. A heading of two to three words at 32–40px sits in columns 1–3. Columns 5–12 hold the list in two text columns with a 64px gap. Items are grouped under plain group names at 24px in medium weight with 48px above each group. Each item is a row: the name at 19px on the left, the price at the same size on the right on the same baseline, with tabular figures and the currency sign shown only once per group; beneath the name, one line of description at 16px in the softer ink, no wider than 36ch. Rows are 22px apart. Name and price are joined only by empty space (flex with `justify-content: space-between`), with no dot leaders and no lines. One small photograph (4:5, three columns wide) may sit under the heading in the left zone.",
"mobile": "One column. The heading at 28px, then the photograph at 60% width if used. Each item keeps name left and price right on one line at 17px, with its description beneath in the softer ink. Group names at 20px with 40px above.",
"seenIn": []
},
{
"id": "pricing-ticket-with-stub",
"role": "pricing",
"name": "The ticket",
"shape": "strip",
"tags": [
"object-led",
"colour-field"
],
"directions": [
"page-is-the-object",
"borrowed-category",
"loud-flat-poster",
"pinned-poster",
"colour-chapters"
],
"needs": [],
"blueprint": "The price is printed on a ticket. On a flat contrasting ground, one filled panel about 64vw wide with 2.3:1 proportions sits centred and straight, built as a two-part grid (7fr 3fr). A half-round notch 28px across is bitten out of the top and bottom edges where the two parts meet (two absolutely positioned circles in the ground colour), and a column of round dots 6px across in the ground colour runs between the notches as the perforation. The main part holds, top-left with 40px padding, what is being bought in two to four words at about 4vw, and along its bottom three or four short lines at 17px (dates, what is included, terms) in two tidy columns. The stub holds the price at about 6vw, centred, and under it the action as a solid bar the full width of the stub, 56px tall.",
"mobile": "The ticket turns upright: full width less 20px margins, main part on top, stub beneath, the notches now on the left and right edges and the dot perforation running across. Title at 9vw, price at 16vw, the action bar full width inside the stub.",
"seenIn": []
},
{
"id": "pricing-itemised-receipt",
"role": "pricing",
"name": "The itemised receipt",
"shape": "stack",
"tags": [
"object-led",
"quiet"
],
"directions": [
"page-is-the-object",
"hero-object",
"specimen-catalogue",
"borrowed-category",
"quiet-instrument"
],
"needs": [],
"blueprint": "For offers made of parts: a base price plus options, a kit, a bundle. A tall paper-coloured slip 380px wide sits in columns 8–11 on a contrasting ground, its bottom edge cut into a zigzag with `clip-path: polygon()`, its top edge running off the top of the section. On the slip, with 28px padding: the name centred at 20px bold, then each item as a row with the description left and the amount right at 16px with tabular figures, 14px between rows; a thick 4px bar in the ink colour; then the total as the largest thing on the slip at 44px, right-aligned. Columns 1–6 carry the heading (two to four words at about 4vw), one paragraph at 18px and the button, starting 96px from the top. If options are selectable, ticking one in the left column adds its row to the slip and updates the total.",
"mobile": "Heading, paragraph and any options come first. The slip follows at 86% width, centred, keeping its zigzag foot, with rows at 16px and the total at 36px. The button sits under the slip at full width, 52px tall.",
"seenIn": [
"opl-poetry-camera"
]
},
{
"id": "pricing-plan-index-live-figure",
"role": "pricing",
"name": "Plan names, one live figure",
"shape": "index",
"tags": [
"type-led",
"ui-led"
],
"directions": [
"pinned-poster",
"product-performs",
"contact-sheet",
"name-as-monument",
"one-motif"
],
"needs": [],
"blueprint": "Plans are a list of names; the price shown belongs to whichever name is selected. Columns 1–6 hold the plan names stacked at about 5vw, leading 1.1, each a `