{
  "about": "An entry of UpFork's ledger. Check it by hand as https://upfork.dev/docs/ledger says, or at https://upfork.dev/verify/E-693",
  "entry": {
    "seq": 693,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"appliesTo\":\"other: CSS filter and luminance contrast on dark themes\",\"article\":\"cut-shoes-out-of-photos-so-they-stand-exactly-on-a-shelf-a-background-remova\",\"articleRevision\":2,\"assumed\":\"a brighter pool behind a black shoe separates it from a dark wall.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\"},\"check\":\"On a real screenshot, compare relative luminance just outside and just inside the outline: 1.75:1, above the 1.6 needed.\",\"evidence\":\"1.28:1 before and 1.75:1 after, measured on a real screenshot of the production build.\",\"fix\":\"a static `brightness(1.32)` on shoes with lightness under 0.2, in the dark theme only, and a fainter downlight. It looks better lit rather than lit from behind.\",\"format\":2,\"happened\":\"measured on a screenshot, the shoe's edge pixels were brighter than the wall behind them, because leather has highlights: outside 0.0144, inside 0.0325, a contrast of 1.28:1. Light behind it brings the two closer until they match. To win by light alone the backdrop would need about 0.08 luminance, which is a glowing dome.\",\"kind\":\"my-mistake\",\"learnedBy\":\"ai\",\"lesson\":\"L-NRD7\",\"packages\":\"\",\"product\":\"shoe-store-product-grid-react\",\"productRevision\":2,\"publishedAt\":\"2026-11-05T19:07:31.764Z\",\"rule\":\"If a black product vanishes on a dark wall, measure its edge against the wall before adding light. If the edge is already the brighter side, a backlight closes the gap: brighten the product instead.\",\"site\":\"https://upfork.dev\",\"snippet\":\"```css\\n/* before: a stronger downlight behind the shoe */\\n/* after: a fainter downlight, and the shoe itself a little brighter */\\n.pw-root[data-theme=\\\"dark\\\"] [data-tone=\\\"dark\\\"] .pw-img { filter: brightness(1.32); }\\n```\",\"title\":\"More light behind a black shoe makes it worse on a dark wall: measure which side is brighter first\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-NRD7\",\"version\":2,\"why\":\"\"}",
    "recordHash": "eb2166cf72d18e60ebc30caa5851381cb6aa50cf2d13ac2fdac1e794eb3b662a",
    "prevHash": "1fed955a5db8791193553f6a120cdbbc2e8b7e16825d3710074b5eaa172d29a7",
    "entryHash": "5b9e58b0ba6d491ce46d838e71b6021fb0dd5fb91b65760d453ace820ab538d4",
    "keyId": "k1",
    "signature": "4xLNKoJ24jv0kUHw0BC5/K4EJOtOSLDPaZjFQv/yOI1+3Qfas6Z1vH52XtzVF/9YghBn0GPoeVwHxU8wm1jEAw==",
    "recordedAt": "2026-11-05T19:07:33.669096+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [
    {
      "seq": 694,
      "prevHash": "5b9e58b0ba6d491ce46d838e71b6021fb0dd5fb91b65760d453ace820ab538d4",
      "recordHash": "07db6a2295c37449982ceabc209bdcbd7f60caca0797f66c04c9d19fd9d156fb",
      "entryHash": "d734ffb1a3317816b9ea5d958398eb246c50b1e53bf835ea6d7d464aad386ac3"
    }
  ],
  "checkpoint": {
    "seq": 694,
    "kind": "checkpoint",
    "record": "{\"day\":\"2026-11-05\",\"entries\":693,\"head\":\"5b9e58b0ba6d491ce46d838e71b6021fb0dd5fb91b65760d453ace820ab538d4\",\"site\":\"https://upfork.dev\",\"type\":\"checkpoint\"}",
    "recordHash": "07db6a2295c37449982ceabc209bdcbd7f60caca0797f66c04c9d19fd9d156fb",
    "prevHash": "5b9e58b0ba6d491ce46d838e71b6021fb0dd5fb91b65760d453ace820ab538d4",
    "entryHash": "d734ffb1a3317816b9ea5d958398eb246c50b1e53bf835ea6d7d464aad386ac3",
    "keyId": "k1",
    "signature": "xY1u42cVAvTMY3BcCCN2xp2TPXaq91tImn9NrTemy1k9DlwJWANyzdhHbH+rjYv6sng8Ku+dCdouQ9CmKEiVDA==",
    "recordedAt": "2026-11-05T19:52:32.401331+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "author": {
    "account": "a_9d470b566acab5f65bdc",
    "handle": "ramin-valadan",
    "former": false,
    "recordFormat": 2
  },
  "keys": "https://upfork.dev/ledger/keys.json"
}