Skip to content

Slide 01 / 07

Click the deck, then use the arrow keys like a real presentation.

Readout

Family
Boardroom
Theme
Light
Type
Spectral + Karla
Accent
#1f5f5b
Corners
6px
Moves on
Keys, swipe
Studio
Ready

30 of 30, Boardroom

Pyramid.

One governing thought on the left, its whole argument tree always on screen, lighting the route you are on.

Look
As designed

How it moves

Warm, printed-report calm: Minto’s Pyramid Principle made visible, with a persistent argument map and a "Therefore" line on every slide. Use it for a recommendation you have to defend, a board case, a policy paper, a diligence conclusion.

This is the specification the Studio sends to the model, written for Pyramid's own look. Change the look in the Studio and every value follows.

Palette

  • Background#faf8f4
  • Text#1c1a18
  • Muted#6d675f
  • Accent#1f5f5b
  • Surface#ffffff
  • Hairlinergba(28,26,24,.15)

Type: Spectral + Karla. Corners: 6px.

Layout

  • Two zones on a warm #faf8f4 page. Left: a fixed argument map, width max(22vw, 240px), vertically centred, with a 1px rgba(28,26,24,.15) hairline on its right edge and a 0.66rem uppercase 0.16em-tracked #6d675f heading "The argument" above it. Right: the main panel, padding 8vh 5vw 7vh 3vw, all slides stacked in one grid area (grid-template-columns: minmax(0,1fr)), each slide align-self:center, max-width 60rem, flex column, gap 2.6vh.
  • THE CONTRACT. Every slide declares its place in the argument inline: data-level="0|1|2" and data-branch="1|2|3". Level 0 is the governing thought and is the cover. Level 1 slides are the supporting arguments (one per branch). Level 2 slides are the evidence sitting under the level-1 slide with the same data-branch. data-title stays the 1–3 word tracker label; the action title is the long sentence in the panel. Nothing else drives the map.
  • MAP BUILT FROM THE CONTRACT. Script walks the slides once: the level-0 slide becomes the governing node (a <button class="n n-gov"> carrying its data-arg sentence, Spectral 0.8rem/600, max-width 26ch, white fill, 1px rgba(28,26,24,.15) border, 6px radius); each level-1 slide becomes a branch <button data-goto> indented 22px carrying its data-title; each level-2 slide becomes a smaller evidence <button data-goto> indented 46px, 0.72rem/500. All nodes justify-self:start so they hug their label. The tree is a grid with 0.45rem gaps and position:relative; an inline <svg> sits absolutely at inset:0 behind the nodes.
  • CONNECTORS. Drawn from measured geometry, never guessed: for each node, take its parent's rect and its own rect relative to the tree, and emit one elbow path "M x y0 V y1 H x1" where x = parent.left + 11 (a spine dropping from inside the parent's left edge), y0 = parent.bottom, y1 = child's vertical centre, x1 = child.left. 1px rgba(28,26,24,.15). Recompute on resize and on every slide change so a path can never miss its node.
  • ACTIVE ROUTE. The route is governing → current branch → current node. Its paths are moved to the end of the <svg> (so they are never covered), drawn in #1f5f5b at 1.5px, and animated: set stroke-dasharray and stroke-dashoffset to the path length, force a reflow, then transition stroke-dashoffset to 0 over 600ms cubic-bezier(.22,1,.36,1). The live argument literally draws itself. The current node gets a 2px #1f5f5b border and full #1c1a18 ink (300ms); nodes on the active branch are full ink; every other node stays #6d675f.
  • PANEL CONTENT, in order: a level badge, a pill reading "Governing thought", "Supporting argument 2" or "Evidence", 0.66rem uppercase 0.16em tracked, #1f5f5b text on an 8% #1f5f5b tint, 3px radius; the action title in Spectral clamp(1.6rem, 2.8vw, 2.8rem), weight 500, line-height 1.25, max-width 44ch; the object; then the takeaway as "Therefore", the word in 0.68rem uppercase tracked #1f5f5b, the sentence under it in Karla 1rem weight 500, the whole block with a 3px #1f5f5b left border and 1rem left padding. On the cover the governing thought replaces the action title at clamp(2rem, 3.6vw, 3.6rem) with the cover lede beneath and no takeaway.
  • SIGNATURE EXHIBIT, ISSUE TREE (driver tree). A 3-column grid (1fr 1fr 1.2fr, column-gap clamp(1.4rem,3vw,3rem), min-height clamp(13rem,38vh,20rem)); each column is its own grid with grid-auto-rows:1fr and align-items:center, so 1 root, 2 drivers and 4 leaves line up on exact halves and quarters. Nodes are white hairline boxes, 6px radius, 0.8rem/600 label plus, on the leaves, a measured value in #1f5f5b 0.74rem/700 tabular ("2 weeks", "1 team, 7 weeks", "0 hand-offs", "6 of 6 engagements"). An absolutely positioned inline <svg> behind the nodes draws 1px elbows measured from the rects: "M x0 y0 H mx V y1 H x1" with mx the midpoint of the gap; the two segments on the strongest driver are #1f5f5b at 1.5px and that driver and leaf get an #1f5f5b border. A figcaption names what is decomposed, says what the accent path means, and carries the source.
  • FOOTER. 1px rgba(28,26,24,.15) hairline across the panel, source line left, "Confidential, for discussion only" centre, "03 / 07" right, all 0.7rem #6d675f tabular-nums, nowrap, never overlapping the content.

Signature motion, "the argument draws"

  • On deck:change: the map redraws the active route (stroke-dashoffset, 600ms cubic-bezier(.22,1,.36,1)) while the new node's border transitions to accent over 300ms.
  • In the panel the outgoing slide fades over 250ms; the incoming slide is force-started at translate(dx, 14px) / opacity 0 (inline, with transition suppressed and a forced reflow), then released to transform:none / opacity:1 over 600ms cubic-bezier(.22,1,.36,1) with a 200ms delay. dx = +24px when you move DOWN a level (argument → evidence), −24px when you move UP or across, computed in your own JS from the previous and current slide's data-level / data-branch, so the direction of travel through the argument is legible. Nothing else moves. body carries data-reveal-delay="600" and data-animate-delay="600" so objects stagger in after the panel lands.

Writing rules (this is what makes the deck professional)

  • ACTION TITLES. Every headline is the finding as a full sentence with a verb. Good: "A smaller roster lifted retention to 92% and cut delivery time by 38%". Bad: "Retention". A reader who reads only the titles must get the whole argument.
  • Keep data-title as a 1–3 word tracker label on every slide as well; the map and the furniture use it.
  • THE SO-WHAT. One "Therefore" line per slide: the implication, not a summary of the slide.
  • MECE. Groups of parallel items are 3 or 4, mutually exclusive, collectively exhaustive, and the same kind of thing.
  • SOURCE. Every exhibit slide carries "Source: …" with the base (n = …) where relevant, plus the page number and confidentiality mark.
  • PYRAMID RULES. Exactly one governing thought (level 0). 3 or 4 supporting arguments (level 1), mutually exclusive. Every argument backed by at least one evidence slide (level 2, same data-branch). Each level summarises the level below it, an argument must be true because its evidence is true, and the governing thought must be true because the arguments are.

Navigation. → ↓ Space PageDown next, ← ↑ PageUp prev, Home/End, 1-9 jump, F fullscreen; touch swipe. No wheel. Every node in the argument map is a real <button data-goto>, the map is the navigation.