# Cover ledger

> A full-bleed cover on your own photograph with nothing on it but a ledger of three paper plates flush along its foot: a number at display size, a small tracked label and one line on each, with the photograph showing through the gaps. No headline on the image. Includes a replaceable example photograph. States no colour and no font of its own. Ships with a short hand-off row on your theme's paper below it, so the cover reads as a section and not the page.

Canonical: https://patternpaste.com/pattern/cover-ledger.html
Section: Cover
Access: Included in Pattern Paste access.
Needs: Requires a block theme on WordPress 7.0 to 7.1. Classic themes and page builders are outside our supported setup. Adaptive patterns use the block theme’s colour, spacing and typography presets; styled variations declare their own colours or type.
Blocks: column, columns, cover, group, paragraph
Keywords: cover, photo, video, banner, page header, ledger, numbers, stats

## Variations (4)

### Paper ledger (the default)

Identical markup in every theme.

Three plates in your base colour with your contrast as the type, sitting on the bottom edge of the cover at your theme's gutter, under a 40% veil of your contrast on the photograph. On a phone the plates stack, still flush with the foot, with the photograph above them.

### In motion

Identical markup in every theme.

The same ledger over a clip instead of a still. Choose a short, silent, looping video in the cover's media picker; the plates and the veil are unchanged, so the numbers are exactly as legible as they are on a photograph.

### Ink ledger

Identical markup in every theme.

The plates invert: your contrast as the ground, your base as the type. The same ledger, more weight, for a photograph that is mostly light.

### Mend

This variation states its own colours and states its own type: identical in every theme.

The Mend physio set: a full-bleed photograph of hill walkers under a light teal veil, three plates along its foot, the first deep teal with an apricot figure, the others clinical white with teal figures and sage labels, over a mint strip, all in Avenir Next.


---

## The signature moment: density contrast, top against foot

The top three quarters of the section are empty photograph. The bottom
quarter is packed: three numbers at 40px to 64px, three labels, three lines,
all on paper, sitting on the edge like a row of labels pinned along the
bottom of a print. There is no headline; the numbers are the headline. The
plates have no margin below them and the cover has no padding, so the paper
touches the foot of the section, and the gaps between plates (1.5rem in a
row, 1rem stacked) are the only places the photograph is seen at the bottom.

Below 782px core stacks the columns. The stack stays flush with the foot,
because the bottom alignment is carried by the wrapper and not by a
viewport-dependent offset, and the photograph becomes a band above it: at
least `clamp(6rem, 12vw, 10rem)` of image, more when the 34rem floor has
room left over.

## How the bottom alignment is built, and why

The cover's own content positions (`bottom left`, `bottom center`) were not
used. A custom content position sets the cover's inner container to
`width: auto`, so it shrink-wraps to its content; a plate carrying a long
paragraph fills its measure anyway, which is why `cover-plate` can use one,
but a ledger of short numbers would shrink to the width of its words, and to
a different width in every theme's typeface. So the cover keeps core's
default centring, which keeps the inner container at `width: 100%`, and the
first group inside it is a vertical flex stack with `min-height: 34rem`
(the same value as the cover's floor), `justifyContent: stretch` and
`verticalAlignment: bottom`. The stack fills the cover, its one child (a
constrained wrapper at `contentSize: 1240px`, which picks up the theme's
root padding and so sits at the theme's gutter) is pushed to the floor, and
the columns inside it span the measure at every width. A buyer raising the
cover's height changes `minHeight` on the cover AND `min-height` on that
first group; they are the same number on purpose.

## The rule this pattern obeys

**Type never sits on a photograph.** Every word is on a plate whose ground
is a `base` chain and whose type is a `contrast` chain, and every paragraph
states its own text colour rather than inheriting the plate's, so a theme's
element styles cannot repaint it. Every word is therefore measured on a pair
of colours your theme guarantees. The veil over the photograph is decoration;
it may recede without loss. The cover states its own text colour (`base`) so
that core's `:where()` rule, which would otherwise paint any text in it
`#fff`, never fires; nothing sits outside the plates today, and the chain is
there so that nothing a buyer adds does either without a colour of its own.

## What it inherits, what it decides

Inherits: every colour (plates `base`, type `contrast`, veil `contrast` at
40%), the typeface, the root padding that sets the gutter. Decides: the
proportion of the type (numbers from 40px to 64px at line-height 1 and
-0.035em, a 13px to 14px tracked uppercase label, a 15px to 16px line at
1.5), the plate padding, the gaps, the 34rem floor, and the element order.
The numbers are paragraphs, not headings, so a theme's heading styles do
not reach them and the page's outline is not three numbers.

## What a buyer changes first

The photograph. The cover includes an example photograph: choose Replace, select an image from the media library, and set the
focal point high, since the foot is covered by the ledger. Then the three
numbers and their labels; a label reads best under 22 characters so it holds
one line on every plate, and the line under it under about 60 characters so
the three plates stay the same height. The line is optional: delete the
third paragraph from every plate, not from one.

## Variations

- **Ink ledger**: the plates invert, `contrast` ground and `base` type. The
  same ledger, more weight, for a photograph that is mostly light. The veil
  is unchanged.
- **In motion**: `backgroundType: "video"`. The same ledger over a clip. The
  cover remains empty for your own clip (an empty video cover is valid in the editor
  and saves as the veil over the inner container); choose a short, silent,
  looping clip in the cover's media picker. Core writes the `<video>` with
  `autoplay muted loop playsinline`, which is what iOS requires to play
  inline without a gesture. Nothing about the plates changes.

## Why the height is in rem

The cover's `minHeight` is `34rem`, never a `vh` value. The preview on this page sizes its frame to the pattern, and a viewport-relative height would
size the pattern to the frame in turn; that loop only ever shrinks. `rem`
also means the section is the same height in every theme at a given root
size. The veil is `dimRatio: 40` rather than a value between tens because
core ships an opacity rule only for multiples of ten; `has-background-dim-35`
would match no rule and fall back to 50%.

## Measured

Editor round-trip on WordPress 7.0: base and both variations
valid, and the markup the editor writes back is identical to each authored
file (after the editor's harmless `--` escaping). The editor writes a video
cover's `backgroundType` key after
`isUserOverlayColor`, not after `dimRatio`; the file ships that order.

## The hand-off row

A full-bleed cover on its own fills the preview on this page edge to edge, and
on a buyer's page it is never alone either. So the pattern ships with what
comes next: a short row on your theme's paper under the cover, a tracked
label and one paragraph at a 34rem measure. It is ordinary page copy, it
shows where the cover ENDS, and it is the first thing a buyer rewrites or
deletes. It carries the same chains as everything else.

## Display type

Off the theme's ladder on purpose, because the size is the composition:
- paragraph at clamp(2.5rem, 4.6vw, 4rem)

## Included images

The copied markup includes WordPress Photo Directory example photographs. The public image URLs
keep the examples visible after pasting. Select an image or cover and choose
**Replace** to use your own Media Library files. See [image credits](/image-credits/)
for the sources and licenses. Pasting an image URL does not import a Media Library
attachment.
