# Homepage imagery credits - 21 September 2026

Two NASA asteroid frames and one screenshot of our own product. Both asteroid
frames come from black and white cameras, DRACO on DART and PolyCam on
OSIRIS-REx, so they are shown as they were shot apart from the crop and the
grade recorded below. The sign marks on the Bennu plate are a Horospire layer
drawn over the photograph in the browser, in HTML and CSS, and are not part of
the NASA image. Use of NASA imagery conveys no endorsement: NASA does not
endorse Horospire or its interpretations, and no NASA insignia appears on the
site.

Files were downloaded on 21 September 2026 at the host-provided resolutions.
The build is reproducible: `bash scripts/home-images/build.sh` downloads both
originals, checks their SHA-256 sums, and rewrites every file here. The
originals are not kept in the repository.

## Plate A, the method band

- Body: Dimorphos, the moonlet of the asteroid Didymos, a pile of boulders.
- Credit: **NASA/Johns Hopkins APL**.
- Source page: [DART's final images prior to impact](https://www.nasa.gov/solar-system/darts-final-images-prior-to-impact/).
- Downloaded file: [all_dimorphos_dart_0401930040_12262_01_iof_imagedisplay-final.png](https://www.nasa.gov/wp-content/uploads/2022/09/all_dimorphos_dart_0401930040_12262_01_iof_imagedisplay-final.png),
  1041 x 1041, 8-bit greyscale PNG, 341,920 bytes,
  SHA-256 `4d0695a6d485de59714ca3b7e83ad9c3d5f3c1ba3f21102964c256391a5deccf`.
- What it is: the last complete frame DRACO returned, 11 seconds before the DART
  spacecraft reached Dimorphos on 26 September 2022. 1041 px is the published
  full resolution of this frame; it is not upscaled anywhere.
- Measured body: 772 x 763 px, centred at (470, 564).
- Crops: tall 575 x 820 (7:10), a 1.075 margin around the body height so the
  limb runs off the top and bottom and the sides are cut; strip 273 x 820
  (1:3), the same vertical framing through the middle of the body; band
  1041 x 456 (16:7), added 21 September 2026, the whole frame width and a
  window through the body's centre, so both limbs are in it with sky beyond
  them. The band is what a phone shows: under 640 px the strip is about 105 px
  wide beside the numbers and reads as a grey bar rather than as a world, which
  the owner caught on his own iPhone. The tall crop still serves 1024 and up
  and the strip serves 640 to 1023.
- Field 676 x 296 (16:7) at (208, 344) to (884, 640), added 21 September 2026
  for the owner's light theme rule ("still black edges around on white"). It is
  the widest 16:7 window in the frame that holds no pixel darker than 30 after
  the grade, found by search rather than by inscribing a rectangle in the body's
  bounding box, because the sky immediately around the body is not black but
  about 12 to 21 (scattered light) and a rubble pile is not an ellipse. Darkest
  pixel 30.4, 1st percentile 33.4, longest run of near black along any edge 0
  px. The light theme shows it under 640 px; dark keeps the band, where the
  frame's own space around the body belongs.
- Above 640 px both themes still show the strip and the tall crop, and those two
  are not sky free: measured on the files, `dimorphos-tall-575.jpg` has a left
  band at mean 38.6 (37.5 per cent of it under 25), a bottom band at mean 18.2
  (96.7 per cent under 25) and three corners between 15 and 20, so by the
  criterion this script applies to the field crop (nothing under 30) they carry
  scattered light sky at their edges. What a reader sees is the PAINTED plate,
  which object-fit crops: in the light theme the share of painted pixels under
  25 is 3.03 per cent at 1024, 1.70 at 1100, 0.97 at 1152, 0.57 at 1200, 0.20 at
  1300, 0.10 at 1400 and 0.08 at 1670, and the 60 px corner means run from 40 to
  46 at 1024 (top left, bottom left, bottom right) up to 63 to 93 at 1670,
  against a centre of 133 and a top right of about 178. So there is no black box
  and almost no near black painted from 1152 up, but the photograph does shade
  to dark grey in three corners, most of all at 1024. A sky free tall and strip
  pair for the light theme is a possible follow up; it was not cut here because
  it would change a desktop composition the owner has already accepted.

| File | Intrinsic | Bytes |
|---|---|---|
| `dimorphos-tall-575.avif` / `.webp` / `.jpg` | 575 x 820 | 28,571 / 42,082 / 67,372 |
| `dimorphos-tall-480.avif` / `.webp` / `.jpg` | 480 x 685 | 25,604 / 35,606 / 53,289 |
| `dimorphos-strip-273.avif` / `.webp` / `.jpg` | 273 x 820 | 15,835 / 23,504 / 23,862 |
| `dimorphos-strip-240.avif` / `.webp` / `.jpg` | 240 x 721 | 14,396 / 20,598 / 24,468 |
| `dimorphos-strip-120.avif` / `.webp` / `.jpg` | 120 x 360 | 8,788 / 10,188 / 11,805 |
| `dimorphos-band-1041.avif` / `.webp` / `.jpg` | 1041 x 456 | 22,643 / 32,488 / 55,968 |
| `dimorphos-band-780.avif` / `.webp` / `.jpg` | 780 x 342 | 18,546 / 24,990 / 38,368 |
| `dimorphos-band-390.avif` / `.webp` / `.jpg` | 390 x 171 | 10,818 / 11,874 / 14,633 |
| `dimorphos-field-676.avif` / `.webp` / `.jpg` | 676 x 296 | 15,171 / 22,904 / 33,905 |
| `dimorphos-field-390.avif` / `.webp` / `.jpg` | 390 x 171 | 10,564 / 13,266 / 16,692 |

Visible credit: "Image: NASA/Johns Hopkins APL."

## Reuse: the auth panel (23 September 2026)

With `features.auth_chrome` on, the left panel of `/login` and `/register`
(`resources/views/auth/partials/account-proof.blade.php`) shows Plate A again,
in the files above and nothing new: `dimorphos-band-*` in the dark theme and
`dimorphos-field-*` in the light theme on phones, `dimorphos-tall-*` in both
from 1024 px. The frame takes the height the form beside it leaves, about 230
px beside the login form and about 640 px beside the register form at 1440, and
the tall crop covers it. In the light theme only, from 1024 px, the picture is
shown through a 1.4 times window held at 65 and 45 per cent, which keeps the
sky in the crop's top left corner, left edge and bottom out of the frame (the
owner's rule: no black around a photograph on parchment). That is a crop in
CSS; the file is untouched. The visible credit under the frame is the method
band's own line, with the endorsement sentence: "Dimorphos, photographed by
NASA's DART spacecraft. Image: NASA/Johns Hopkins APL. NASA does not endorse
Horospire."

## The grade

One command for both bodies, so the two plates read as one family
(`scripts/home-images/cut-plates.py`):

- greyscale;
- a levels stretch measured on the whole source frame, the 1st percentile to 4
  and the 99th to 215 (Dimorphos 3 and 239, Bennu 0 and 226), so the sky sits
  just above black on the plate ground and the brightest boulders stop short of
  paper white;
- gamma 1.1, that is output = input raised to 1/1.1;
- then the crop, then a Lanczos downsample to each width.

No sharpening, no cloning, no fill, no compositing, no painting. A cut and a
grade, never a retouch. The grade runs before the crop, so every crop of one
body carries the same tone. AVIF is encoded monochrome (yuv400).

## The cairn, band 6

Seven photographs of small worlds, cut out of black space and stacked beside
the sign wall, one stone per generation, smallest at the top. The stack, the
sign marks and the colours are ours; every photograph is NASA's and is credited
on the page as well as here. NASA does not endorse Horospire.

What was done to each frame, and nothing else (`scripts/home-images/cut-cairn.py`):

- a luminance key for the alpha, clear at 10 and under, opaque from 36, the
  same method the reading's Saturn cutout uses;
- the largest connected component only, so Ida's moon Dactyl, and any star or
  noise in a corner, are dropped rather than cloned out. **Dactyl is not in the
  Ida stone**; it falls outside the cut;
- everything the lit body encloses is made opaque, so a dark crater stays a
  dark crater instead of becoming a hole;
- the shared grade of the two plates, measured on the body rather than on the
  frame, because these frames are mostly black sky;
- a rotation, recorded per stone below, that levels the body's long axis; a
  body rounder than an axis ratio of 1.25 is not levelled at all, only turned
  so its lit side is up;
- a crop to the silhouette and a Lanczos downsample.

Each stone also ships a `cairn-<body>-mask.webp`: the same silhouette as a
half size black image with the stone's alpha, about 1.7 to 5.7 KB, 22 KB for
the seven. It is what the colour wash is masked by. Pointing the mask at the
photograph itself made a browser fetch every stone twice, 152 KB becoming 304
KB on a server that sends no cache headers.

**No stone is mirrored.** A mirrored Eros is a body that does not exist; the cut
script contains no flip of any kind and `CairnStonesTest` fails if one appears.
No cloning, no painted edges, no baked shadows, and no body composited into
another body's frame: the stones are separate elements laid out in CSS, 4px
apart, and never overlap.

**Two bodies are not the ones the direction named**, both for the same reason
and by the rule the direction set for a body too small to hold its place:

- Dinkinesh's only complete frame (the Lucy family portrait) gives a body about
  100px across against a 200px floor, so the direction's own fallback, Phobos,
  stands in the parents' place.
- Mathilde's only published frame, PIA02477 at 640 x 397, gives a body about
  210px where that stone needs 420. Hyperion, photographed by Cassini, takes
  its place. The caption names what is shown, never what was planned.

### The stack itself

The seven do not float: `cut-cairn.py` drops each stone onto the one below
until their silhouettes meet in the columns where they overlap, then holds it
1.5 units short so no photograph ever covers another, and leans it left or
right of the cairn's axis by a share of its support's half width, so the
silhouette leans and recovers instead of standing like a totem. Every stone
rests on between 144 and 512 columns of the stone under it.

The plate's shape follows from that, it is not a choice: seven stones at these
widths come to 1795 units of height for 1,000 of width, so the STACK is
`aspect-ratio: 1000 / 1795` and the plate is that plus its 8px of air on every
side. The ratio sits on the stack and not on the plate because the plate's box
is 18px wider and taller than the box the stones are drawn in, and putting the
ratio there stretched the whole stack about one and a half percent vertically
against its own widths, by an amount that changed with the width. The base stone is 60 percent of the plate at every
width; the remaining 40 percent is the gutter the generation labels stand in,
and each label is placed at the row of its own stone that leaves the most black
plate to its left, measured over the label's whole height so it can never ride
onto the rock.

Each row carries a second measurement, `reach_pct`, and it answers a different
question. `room_pct` is the darkest reading over the whole height a label may
take, which is the right promise for a word. `reach_pct` is the first pixel of
rock a reader can SEE on the one row the leader is drawn along, neighbours
included, read from the shipped WebP at the size a browser paints it and
composited over the plate's own ground. The two differ by up to 8 points of
plate width. A leader that stopped at the first left a hole of up to 43px
between its end and the rock it pointed at; it stops at the second.

In the LIGHT theme the plate is not drawn at all: the seven stones stand on the
page itself, as the reference for this band does. That needs a SECOND CUT of
the same seven photographs, shipped beside the first:

- `cairn-<body>-light.webp`, the stone as the light theme draws it. The
  photograph is the same file's pixels; only the alpha differs, and it differs
  by being simpler. The first key follows lit pixels, so along a terminator it
  leaves a ragged contour and a scatter of disconnected islands; on a night
  plate that is invisible and on cream every island is a dark speck on the
  paper. The second cut keeps the largest connected component, smooths the
  outline by about eight pixels of the shipped file, and then closes the holes
  AGAIN, because blurring a shape with a deep bay in it pinches the mouth of
  the bay shut and turns an inlet into a window with the page showing through.
  Hyperion is smoothed at sixteen rather than eight: its lower right limb is
  joined to the rest of the body through a band of shadow the key cut away,
  and the source frame shows one moon, not a rock and a tail. What comes back
  is the body's own shadowed rock, which the first key threw away for being
  dark. A crop, not a retouch: nothing is painted, cloned, mirrored or moved,
  and no photograph pixel changes.
- `cairn-<body>-light-mask.webp`, that contour on its own, so the colour wash
  and the rock share one edge in the light theme as they do in the dark one.

Weight: the light cuts are 128,230 bytes and their masks 11,670, against
158,618 and 23,262 for the dark pair. Only one pair is ever fetched, because
the other stone is display:none and both engines skip loading those.

The grade is in CSS and applies to the light theme only: `contrast(1.38)` opens
the range and `brightness(0.79)` seats the whole thing below the paper, which
puts the stack at a median of about 112 with 155 levels between its darks and
its lights. The dark theme draws its own files with no mask and no grade.

Where a row crosses a terminator the edge is not an edge but a gradient, and
what counts as the start of the rock then moves with the scale the browser
draws at. The cut walks such a label up or down inside its own stone until it
finds a row whose edge is sharp. On this stack one label moved: Bennu's, from
y 9.75 to y 9.58 of the plate.

The gutter was 18 percent until 21 September 2026, which was the stack's bare
left margin: it left about 54px under the base stone at 1670, and a planet
glyph with "Grandparents" beside it needs about 104. The labels wrapped, their
glyphs were stranded on lines of their own and their ticks were drawn over
their own last letters. The cut script was rerun with `GUTTER = 0.40`, which
scales all seven stones by one factor and changes nothing about their order,
their relative sizes or their contacts; the seven WebP files and their masks
came back byte for byte identical. The band gives the plate back the width the
gutter took, so at 1670 the stones are the same 284px across that they were.

### 1 top, your own generation: Bennu

- **NASA/Goddard/University of Arizona**, photographed by OSIRIS-REx. [Source record](https://science.nasa.gov/resource/bennu-mosaic); [downloaded file](https://assets.science.nasa.gov/content/dam/science/psd/solar/2023/09/b/bennu_dec10.png).
- Source frame 1024 x 968, an RGBA PNG carrying a grey image, 1,183,007 bytes,
  SHA-256 `8679f05c80b938d9fdb2ea835196f31ffd62a2f153aafed4601c5478ded1b65b`.
  A twelve-frame PolyCam mosaic of 2 December 2018, taken from about 24 km.
- The alternate frame, [twelve-image_polycam_mosaic_12-2-18.png](https://www.nasa.gov/wp-content/uploads/2023/03/twelve-image_polycam_mosaic_12-2-18.png)
  (1041 x 984, SHA-256 `c9160a54a5e743094650475a90cf0333cae3a35032e3aef140547c8b2208bd89`),
  is the same mosaic in a darker rendering and was measured and rejected: after
  the shared grade its rock sits at a mean of 115 against Dimorphos's 139, while
  this one sits at 148, so it is the one that reads as the same family. No
  larger publication of the mosaic was found on science.nasa.gov, the NASA
  image library or the Photojournal.
- Until 21 September 2026 this frame was also cut as a single tall plate beside
  the sign wall (`bennu-tall-*`, `bennu-band-*`). The cairn replaced that band,
  those twelve files were deleted, and `cut-plates.py` no longer makes them.
- Levels measured on the body: 22 and 234 to the shared 4 and 215, gamma 1.1.
- Rotation **-180.0 degrees** (round body: only the lit side up turn is applied), axis ratio 1.16. **Not mirrored.**
- Cut 942 x 962, shipped as `cairn-bennu.webp` at 219 x 224, 11,940 bytes (cap 12,000), WebP quality 38 with an alpha channel.
- Marks: Leo.
- In the stack: 26.24% of the plate wide, left edge at 42.28%, top at 1.44%, resting on 196 columns of the stone below.

### 2, parents: Phobos

- **NASA/JPL-Caltech/University of Arizona**, photographed by Mars Reconnaissance Orbiter (HiRISE). [Source record](https://images.nasa.gov/details/PIA10368); [downloaded file](https://images-assets.nasa.gov/image/PIA10368/PIA10368~orig.jpg).
- Source frame 3374 x 3300 RGB, 969,751 bytes, SHA-256 `584a4d7c...`.
- Levels measured on the body: 30 and 197 to the shared 4 and 215, gamma 1.1.
- Rotation **-180.0 degrees** (round body: only the lit side up turn is applied), axis ratio 1.07. **Not mirrored.**
- Cut 3170 x 3017, shipped as `cairn-phobos.webp` at 266 x 253, 11,064 bytes (cap 12,000), WebP quality 74 with an alpha channel.
- Marks: Cancer.
- In the stack: 31.16% of the plate wide, left edge at 48.79%, top at 11.92%, resting on 269 columns of the stone below.

### 3, grandparents: Gaspra

- **NASA/JPL**, photographed by Galileo. [Source record](https://images.nasa.gov/details/PIA00118); [downloaded file](https://images-assets.nasa.gov/image/PIA00118/PIA00118~orig.jpg).
- Source frame 1024 x 1024 L, 40,168 bytes, SHA-256 `fc8565a1...`.
- Levels measured on the body: 22 and 221 to the shared 4 and 215, gamma 1.1.
- Rotation **+144.0 degrees**, axis ratio 1.97. **Not mirrored.**
- Cut 659 x 358, shipped as `cairn-gaspra.webp` at 364 x 198, 16,612 bytes (cap 18,000), WebP quality 80 with an alpha channel.
- Marks: Gemini and Virgo.
- In the stack: 42.64% of the plate wide, left edge at 33.03%, top at 23.96%, resting on 342 columns of the stone below.

### 4, great-grandparents: Hyperion

- **NASA/JPL/Space Science Institute**, photographed by Cassini. [Source record](https://images.nasa.gov/details/PIA07740); [downloaded file](https://images-assets.nasa.gov/image/PIA07740/PIA07740~orig.jpg).
- Source frame 1024 x 1024 RGB, 125,864 bytes, SHA-256 `ae7ce0eb...`.
- Levels measured on the body: 17 and 250 to the shared 4 and 215, gamma 1.1.
- Rotation **-16.0 degrees**, axis ratio 1.74. **Not mirrored.**
- Cut 865 x 703, shipped as `cairn-hyperion.webp` at 420 x 341, 36,842 bytes (cap 20,000), WebP quality 32 with an alpha channel.
- Marks: Taurus and Libra.
- In the stack: 49.2% of the plate wide, left edge at 41.41%, top at 32.5%, resting on 427 columns of the stone below.

### 5, fifth generation: Arrokoth

- **NASA/Johns Hopkins APL/Southwest Research Institute, National Optical Astronomy Observatory**, photographed by New Horizons. [Source record](https://science.nasa.gov/solar-system/kuiper-belt/arrokoth-2014-mu69/); [downloaded file](https://science.nasa.gov/wp-content/uploads/2018/11/arrokoth-1920x640-1.jpg).
- Source frame 1920 x 640 RGB, 24,535 bytes, SHA-256 `0a52edd5...`.
- Levels measured on the body: 29 and 156 to the shared 4 and 215, gamma 1.1.
- Rotation **-75.9 degrees**, axis ratio 1.72. **Not mirrored.**
- Cut 578 x 392, shipped as `cairn-arrokoth.webp` at 518 x 351, 23,984 bytes (cap 26,000), WebP quality 74 with an alpha channel.
- Marks: Aries and Scorpio.
- In the stack: 60.68% of the plate wide, left edge at 23.48%, top at 48.83%, resting on 542 columns of the stone below.
- Reuse: the 404 page (`resources/views/errors/404.blade.php`, 23 September 2026) shows the same two files, `cairn-arrokoth.webp` on a night ground in dark and `cairn-arrokoth-light.webp` with the home's light grade on parchment, with the visible line "Arrokoth, photographed by New Horizons. Image: NASA/Johns Hopkins APL/Southwest Research Institute, National Optical Astronomy Observatory. NASA does not endorse Horospire." and a link to this file. The masks are not fetched there: they exist to tint a stone on the home's hover, and the 404 stone does not light.

### 6, sixth generation: Eros

- **NASA/JPL/JHUAPL**, photographed by NEAR Shoemaker. [Source record](https://images.nasa.gov/details/PIA02923); [downloaded file](https://images-assets.nasa.gov/image/PIA02923/PIA02923~orig.jpg).
- Source frame 760 x 838 L, 51,731 bytes, SHA-256 `3e7e3b5c...`.
- Levels measured on the body: 16 and 222 to the shared 4 and 215, gamma 1.1.
- Rotation **+131.1 degrees**, axis ratio 1.81. **Not mirrored.**
- Cut 840 x 577, shipped as `cairn-eros.webp` at 560 x 385, 29,548 bytes (cap 30,000), WebP quality 50 with an alpha channel.
- Marks: Sagittarius and Pisces.
- In the stack: 70.52% of the plate wide, left edge at 29.48%, top at 62.89%, resting on 701 columns of the stone below.

### 7 base, seventh generation: Ida

- **NASA/JPL**, photographed by Galileo. [Source record](https://images.nasa.gov/details/PIA00136); [downloaded file](https://images-assets.nasa.gov/image/PIA00136/PIA00136~orig.jpg).
- Source frame 1700 x 1260 L, 61,988 bytes, SHA-256 `d366c388...`.
- Levels measured on the body: 30 and 222 to the shared 4 and 215, gamma 1.1.
- Rotation **+26.4 degrees**, axis ratio 2.15. **Not mirrored.**
- Cut 836 x 418, shipped as `cairn-ida.webp` at 560 x 280, 28,628 bytes (cap 36,000), WebP quality 86 with an alpha channel.
- Marks: Capricorn and Aquarius.
- In the stack: 82.0% of the plate wide, left edge at 18.0%, top at 81.68%, resting on the plate as the base stone.

## The product picture

- `sample-{dark,light}-band-*` and `sample-{dark,light}-phone-*` are screenshots
  of our own `/sample-reading` page, captured by
  `node scripts/home-images/capture-sample.mjs` against the local server. The
  chart in them is the fixed example chart of `App\Support\SampleChart` (14
  March 1990, 10:30, Vilnius): an example, not a real person, and no personal
  data of any kind appears in the frames.
- The Moon photograph inside that screenshot is **NASA, Apollo 11** (AS11-44-6667),
  credited in `public/images/reading-planets/credits.md`. Since 23 September
  2026 the reading's discs are monochrome by default
  (`features.reading_monochrome_discs`, audit I1, turned on by default at the
  reconcile), so the picture was recaptured with the grey cut of the same
  frame; `sample-capture.json` records `monochrome_discs: true`.
- Rerun the capture whenever the reading changes. That is not left to memory:
  the script writes `sample-capture.json` beside the images, recording the
  reading library version, the sample chart's cache key and the SHA-1 of every
  file the picture is made of, and `SampleCaptureIsCurrentTest` fails with the
  exact command to run the moment one of them moves.

  As captured on 21 September 2026: library `2026-09-10.2`, cache key
  `sample-chart:2026-09-10.2`,
  `329dc22a` `resources/css/analysis-observatory.css`,
  `9abea51d` `resources/views/horoscope/partials/sample-chapter.blade.php`,
  `627a481f` `resources/views/pages/sample-reading.blade.php`,
  `5765ec21` `app/Support/SampleChart.php`.

Recaptured 21 September 2026 against the local server, at a device scale of 2,
after the owner ruled that the homepage picture runs the full width of the band.

The capture is taken of the viewport, not of a region below it. The light
theme paints the page on `body` with `background-attachment: fixed`, one
viewport sized tile, so a clip that ran past the fold came out cream at the top
and bare white canvas below it, with a hard seam at device row 838 of the band
and 313 of the phone. The script now grows the window to hold the whole clip
and scrolls the clip to the top of it before the shutter, and it reads both
margin columns of every frame afterwards: if the mat steps by more than 8
levels between two smoothed samples the capture throws rather than ships, and
`sample-capture.json` records `mat_continuous`.

The band frame is a 1920px viewport, which is where `/sample-reading` reaches
its own widest measure, clipped from the chapter plate to 28px under the basis
rail: 1524 x 864 CSS px, so the capture holds the whole plate, the opening of
the interpretation and all three rail blocks. At a device scale of 2 that is
3048 device pixels, and the homepage band is at most 1521 CSS px wide, so a 2x
screen has a pixel for every pixel it paints. The 1001px `wide` crop that the
old two track row used was deleted with that row.

The phone frame is a 390px viewport clipped to 16px under the first paragraph.
Both stop above the caveat paragraph, so the picture never doubles a sentence
the page may say once. The first frame of each pair is the capture itself; the
second is a copy at the plain CSS width for a screen that does not need the
density.

| File | Intrinsic | avif | webp | jpg |
|---|---|---|---|---|
| `sample-dark-band-3048.*` | 3048 x 1728 | 180,693 | 238,338 | not made |
| `sample-dark-band-1524.*` | 1524 x 864 | 73,143 | 93,112 | 144,586 |
| `sample-light-band-3048.*` | 3048 x 1728 | 162,109 | 232,388 | not made |
| `sample-light-band-1524.*` | 1524 x 864 | 72,729 | 90,848 | 143,767 |
| `sample-dark-phone-780.*` | 780 x 1128 | 44,704 | 56,984 | not made |
| `sample-dark-phone-390.*` | 390 x 564 | 19,179 | 24,726 | 38,614 |
| `sample-light-phone-780.*` | 780 x 1128 | 38,854 | 56,736 | not made |
| `sample-light-phone-390.*` | 390 x 564 | 19,317 | 24,340 | 38,409 |

Every file is under its cap (260 KB band, 70 KB phone). There is no JPEG at
twice the density: a 3048px screenshot cannot reach the cap as a JPEG, and the
fallback exists for a browser that has neither AVIF nor WebP, which is not a
browser with a 2x screen.

## What a browser actually fetches

Measured on the built page: one file per band, AVIF in every case, and the
theme the reader is not in is never downloaded.

| Width | Method plate | Sample | The cairn | Total |
|---|---|---|---|---|
| 390 | `dimorphos-band-1041.avif` 22 KB at DPR 3, `-780` 18 KB at DPR 2 | `sample-*-phone-390.avif` 18 KB | seven stones and seven masks, 182 KB | 222 KB at DPR 3, 218 KB at DPR 2 |
| 1400 | `dimorphos-tall-480.avif` 26 KB | `sample-*-band-1524.avif` 73 KB | seven stones and seven masks, 182 KB | 281 KB |

The cairn is the whole of the sign wall's imagery now: seven WebP cutouts,
158,618 bytes, and seven silhouette masks of 23,262 bytes. Every one is lazy
and none is in the first viewport at any width.
