# V15 Vantage — media ledger

<!-- GENERATED by tools/credits-v15.mjs from _brand/photo-set/SOURCES.json
     and the POOL in v15-vantage/hero-controller.js. Do not edit by hand:
     run `node credits-v15.mjs` instead, or the ledger will drift from
     the frames the page actually loads. -->

Every background in this variant is a **real photograph** of Rotterdam or Delft,
licensed for commercial use and credited to the photographer who took it. None is
AI-generated. An earlier build of this variant did use generated imagery and
disclosed it; that was replaced on 2026-08-01 after board feedback.

No photograph here depicts an 180 Degrees Consulting project, client, team or
event, and no photographer endorses 180DC Delft–Rotterdam. The public footer links
to the on-site credit ledger, which records the photographer and licence for every
frame in the pool.

The pool is **5 frames** — 3 Rotterdam, 2 Delft. Sources: Pexels and Wikimedia Commons.

**Licence obligations.** Attribution is required for every CC BY and CC BY-SA
frame, and for the share-alike frames the cropped, compressed derivative shipped
in `img/` is itself distributed under the same licence. The Pexels License does
not compel attribution; these frames are credited anyway, because this site
credits every photograph regardless of whether its licence requires it.

## Home hero — pool 1/5

Shipped: `img/rotterdam-maas-night.webp` (plus `-sm` 900px and `-2x` 2400px tiers, and `-depth.webp`)

- Hero label: **Rotterdam · Maas**
- Hero credit line: **ClickerHappy · Pexels License**
- Work: **City Skyline Under Clear Sky during Nighttime**
- Creator: **ClickerHappy**
- Source: https://www.pexels.com/photo/city-skyline-under-clear-sky-during-nighttime-1049842/
- Licence: **Pexels License** — https://www.pexels.com/license/
- Original: 3552x2152, cropped to 3228x2152
- Edits: 3:2 crop taking 324px off the LEFT edge (bias 1.0 x), resized to 2400px wide, converted to WebP by prep-v15.mjs
- Note: The left trim is deliberate: it removes a third-party neon company sign that sat at the frame edge. The remaining lit sign reads HULSTKAMP, which is the name of the listed building it is on, not third-party advertising. Source page marks the photo 'Free to use (CC0)'; the governing licence for Pexels content is recorded here as the Pexels License.

## Mission hero — pool 2/5

Shipped: `img/delft-oostpoort-air.webp` (plus `-sm` 900px and `-2x` 2400px tiers, and `-depth.webp`)

- Hero label: **Delft · Oostpoort**
- Hero credit line: **Ludvig14 · CC BY-SA 4.0**
- Work: **Delft EasternGate DJI 0076**
- Creator: **Ludvig14**
- Source: https://commons.wikimedia.org/wiki/File:Delft_EasternGate_DJI_0076.jpg
- Licence: **CC BY-SA 4.0** — https://creativecommons.org/licenses/by-sa/4.0
- Original: 6789x4526, cropped to 6789x4526
- Edits: centre-weighted 3:2 crop (bias 0.5 x / 0.5 y), resized to 2400px wide, converted to WebP by prep-v15.mjs
- **This adaptation remains under CC BY-SA 4.0.**

## For clients hero — pool 3/5

Shipped: `img/markthal-blue-hour.webp` (plus `-sm` 900px and `-2x` 2400px tiers, and `-depth.webp`)

- Hero label: **Rotterdam · Markthal**
- Hero credit line: **Radek Kucharski · CC BY 2.0**
- Work: **Market Hall in Rotterdam (52505656833)**
- Creator: **Radek Kucharski from Warsaw, Poland**
- Source: https://commons.wikimedia.org/wiki/File:Market_Hall_in_Rotterdam_(52505656833).jpg
- Licence: **CC BY 2.0** — https://creativecommons.org/licenses/by/2.0
- Original: 7688x5128, cropped to 7688x5125
- Edits: centre-weighted 3:2 crop (bias 0.5 x / 0.3 y), resized to 2400px wide, converted to WebP by prep-v15.mjs

## Students hero — pool 4/5

Shipped: `img/delft-oostpoort.webp` (plus `-sm` 900px and `-2x` 2400px tiers, and `-depth.webp`)

- Hero label: **Delft · Oostpoort gate**
- Hero credit line: **Michielverbeek · CC BY-SA 4.0**
- Work: **Delft, de Oostpoort RM11968 foto11 2016-03-13 10.32**
- Creator: **Michielverbeek**
- Source: https://commons.wikimedia.org/wiki/File:Delft,_de_Oostpoort_RM11968_foto11_2016-03-13_10.32.jpg
- Licence: **CC BY-SA 4.0** — https://creativecommons.org/licenses/by-sa/4.0
- Original: 4352x2480, cropped to 3720x2480
- Edits: centre-weighted 3:2 crop (bias 0.38 x / 0.5 y), resized to 2400px wide, converted to WebP by prep-v15.mjs
- **This adaptation remains under CC BY-SA 4.0.**

## pool 5/5 (reached by cycling)

Shipped: `img/erasmusbrug-harp.webp` (plus `-sm` 900px and `-2x` 2400px tiers, and `-depth.webp`)

- Hero label: **Rotterdam · Erasmusbrug**
- Hero credit line: **Igor Passchier · Pexels License**
- Work: **Suspension Bridge in Rotterdam at Night**
- Creator: **Igor Passchier**
- Source: https://www.pexels.com/photo/suspension-bridge-in-rotterdam-at-night-20655923/
- Licence: **Pexels License** — https://www.pexels.com/license/
- Original: 5472x3648, cropped to 5472x3648
- Edits: already native 3:2, no crop; resized to 2400px wide, converted to WebP by prep-v15.mjs
- Note: Chosen for the Home hero because it is the only screened frame whose meta line, headline and lede all clear AA by worst-tile, not just by mean. Checked at 3x hero scale for third-party signage: none legible.

## Prepared but not in the pool

These frames are built and on disk so that reinstating one is a POOL edit in
`hero-controller.js`, not a re-download. They are **not** loaded by any page.

- **erasmusbrug-night** — Erasmus Bridge in Rotterdam seen from Deck 18 of AIDAnova, CyberDiver79, CC0. https://commons.wikimedia.org/wiki/File:Erasmus_Bridge_in_Rotterdam_seen_from_Deck_18_of_AIDAnova.jpg
  - Benched because: Was the Home frame until 2026-08-02. The hero lede sits on the illuminated waterfront and measures 2.36:1 at its worst tile against a 3.60 floor, with 6% of tiles under — the whole-frame mean of 6.88:1 hides it. Replaced by erasmusbrug-harp, which is the same landmark from above with the copy column falling on dark sky and water.
- **delft-nieuwe-kerk** — Delft NewChurch DJI 0132, Ludvig14, CC BY-SA 4.0. https://commons.wikimedia.org/wiki/File:Delft_NewChurch_DJI_0132.jpg
  - Benched because: Benched on 2026-08-01 for failing AA behind the hero copy at 4.39:1. That number came from the contrast audit before 2026-08-02, when sharp.stats() was found to be ignoring extract() — so it was the mean of the whole page, not the pixels behind the copy. The bench reason is therefore unverified; re-measure with the fixed audit before ruling on it.
- **delft-canal** — DelftView DJI 0104, Ludvig14, CC BY-SA 4.0. https://commons.wikimedia.org/wiki/File:DelftView_DJI_0104.jpg
  - Benched because: Benched on 2026-08-01 for failing AA behind the hero copy at 4.05:1 in dark type. Same caveat as delft-nieuwe-kerk: that figure predates the 2026-08-02 fix to the contrast audit and measured the whole page, not the copy background. Unverified; re-measure before ruling on it.
