# STILL: photo sources

All photos are real stock from Pexels, used under the Pexels License (free for commercial use, no attribution required, no AI). Nothing is credited on the site. Originals are kept in `_research/c-{id}.jpg`. They are cropped in `prep_photos.py`, then graded in `grade.py`. None of them is upscaled anywhere.

| Used as | Pexels page | Photographer | Original | Crop (x0,y0,x1,y1) → file | Smallest source px per CSS px (desktop / mobile) |
|---|---|---|---|---|---|
| Hero arch (designer at desk) | https://www.pexels.com/photo/6444904/ | ROMBO | 4848×3456 | (1160,0,3925,3456) → `site/img/hero-studio.jpg` 2765×3456 | 5.96× (452×580) / 7.7× (350×450) |
| Work card: bike repair shop | https://www.pexels.com/photo/31714310/ | Fatma Öner | 2560×3840 | (0,600,2240,3400) → `work-bike.jpg` 2240×2800 | 7.1× (236×396) / 7.0× (318×300) |
| Work card: bakery | https://www.pexels.com/photo/7020283/ | furkanfdemir | 4160×6240 | (0,600,4160,5800) → `work-bakery.jpg` 4160×5200 | 13.1× / 13.1× |
| Work card: coffee roaster | https://www.pexels.com/photo/8490370/ | PNW Production | 3565×5347 | (0,300,3560,4750) → `work-coffee.jpg` 3560×4450 | 11.2× (200×396) / 11.2× (318×300) |
| Process (hands sorting prints) | https://www.pexels.com/photo/7014454/ | George Milton | 6000×4000 | (0,900,6000,3200) → `process-hands.jpg` 6000×2300 | 5.0× (1200×400) / 9.6× (350×240) |
| Pair (c): hand holding phone | https://www.pexels.com/photo/6612379/ | Tima Miroshnichenko | 3855×5783 | full frame → `_research/hand-phone-graded.jpg` | 6.0× (640 CSS px wide in the pair) |

Every ratio is at least 3×, so a 3× capture always samples the source down. "Smallest" is the cover-fit ratio: min(source w / box w, source h / box h).

The phone hand differs from FORME's (Pexels 9558700, MART PRODUCTION) and PULSE's (8947174, Kaboompics). It is Lens's B1 #3.

## Retouching (all in `prep_photos.py`)
- **Bakery (7020283):** a stamped "…BAKEHOUSE" brand box and a handwritten note on the paper. Both were refilled with a quadratic surface fit plus matched grain (`refill()`). Checked clean at 100%.
- **Bike (31714310):** the brand names were removed and checked clean at 100%. At display size the smudges don't show.
  - **Kid's bike hanging over the door:** "Corvette" (stripe and lettering) and "Dynamite" decals on the frame, and "BMX 2004" on the handlebar pad. Repainted flat in the frame pink or pad grey, within line masks along each tube.
  - **Bikes stacked inside:** "Geroni…", "Ingm…" and "7005 Technol…" lettering on the frames. Inpainted inside tight masks. A stylised graphic on one white frame stays; it isn't readable as a word.
  - **Shop-window reflection:** a parasol printed "OFÇAY" (a real tea brand, and a Turkish location cue). Its three logo panels were refilled.
  - **Left as is:** the bike tags "705" and "23", which are plain numbers. The crop also already removes the house-number plate and a plate tag.
- **Hero (6444904):** a faint laptop maker logo on the screen bezel was refilled. The crop removes a wall socket. The papers on the desk carry tiny printed text that you can't read at any display size.
- **Coffee (8490370):** the crop removes a dark backdrop edge on the right. The bag is plain.
- **Process (7014454):** no edits. The prints show plants and interiors, with no brands.

## Grade (`grade.py`)
Every photo gets the same target: white balance from near-neutral light pixels (gains clipped to ±4%), then levels to p2 0.05 / p50 0.62 / p98 0.94, then saturation 0.22. The hand photo gets saturation only, with no white balance and no levels, because its pink backdrop isn't a neutral. The printed per-photo gains are in the notes.

## Substitutions from Lens's B4 list ("Rotterdam brand designer")
B4 #9 and #10 (the Erasmus Bridge and the Cube Houses) are left out on purpose. They are place photos, and the site has to stay location-neutral. B4 #1–7 were downloaded and reviewed. #8 was judged from Lens's description.

| B4 pick | Why it wasn't used |
|---|---|
| #1 6621022, #2 6620960 (Antoni Shkraba) | A man in a print studio, which doesn't match Lotte. The posters carry big readable words. |
| #3 8545581 (Kaboompics) | Hands and paper samples only, cropped at the face. The hero needs the designer herself. Kept as a fallback. |
| #4 7598018 (Leeloo The First) | A readable PANTONE card and readable text on the clipboard. |
| #5 6583344 (cottonbro) | A man with interior material samples, so the wrong person and the wrong discipline. |
| #6 7147956 (Michael Burrows) | A fashion studio with a mannequin, which is the wrong discipline. |
| #7 5428676 (Ivan S) | Sketching against a saturated red-orange wall that fights the vermilion UI. It reads as illustration, not identity work. |
| #8 4238480 (Ivan S) | Not downloaded. Lens describes a man sketching at a monitor, which doesn't match Lotte. |

What replaced them:
- **Hero:** 6444904 (ROMBO). A woman at a desk with a colour fan, proofs, a laptop and tea. It matches Story's hero brief closely.
- **Work and process photos:** B4 has none, so each was searched fresh against Story's photo list.
  - Bike: 31714310.
  - Bakery: 7020283.
  - Coffee: 8490370.
  - Process: 7014454.

Rejected while searching:
- 16221732: graffiti and a house plate.
- 8122150: real business signs.
- 8035283: readable text cards.
- 7598074: a Pantone brand.
- 16309240: a branded coffee label.
- Some Pexels ids above 30M couldn't be downloaded from the direct CDN URL.

## Departures from Story's photo brief
- **Bike:** Story asked for a landscape 4:3 shop front. This one is a portrait doorway, because the card slot is portrait. The sign area above the door shows a hanging bike, not an empty sign.
- **Bakery:** Story asked for white bags and a box on a counter. This one is hands wrapping bread in kraft paper (portrait).
- **Coffee:** Story asked for an overhead square shot of kraft bags with blank labels. This is one upright plain kraft bag, with the labels shown as a flat HTML panel beside it, as Story allows.
- **Process:** Story asked for 16:9. The crop is about 2.6:1, matching the section's 1200×400 box.
