{
  "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-51",
  "entry": {
    "seq": 51,
    "kind": "lesson-version",
    "record": "{\"ai\":{\"apps\":[\"Claude\"],\"models\":[\"Claude Opus 5.5\"]},\"article\":\"build-a-cursor-following-mascot-hero-from-an-ai-video-maple-s-frame-engine-a\",\"articleRevision\":1,\"assumed\":\"scaling a plate's contact shadow (two radial gradients) up on hover, animated with motion, was a cheap transform.\",\"author\":{\"account\":\"a_9d470b566acab5f65bdc\",\"handle\":\"ramin-valadan\"},\"evidence\":\"commit f41f0b8: frame times back to p95 17.0 ms, max 17.3 ms.\",\"fix\":\"the contact shadow only fades (opacity 1 → 0.4); the wide, soft shadow that does scale is a single gradient, cheap to paint; and the photo itself only moves up, never scales.\",\"happened\":\"the first hover took a 50 ms frame on an Intel Iris Plus: the scaled layer was painted again at its new size.\",\"kind\":\"tools\",\"learnedBy\":\"ai\",\"lesson\":\"L-FWC2\",\"packages\":\"motion@14.4\",\"product\":\"restaurant-hero-section-react\",\"productRevision\":1,\"publishedAt\":\"2026-10-26T08:14:31.193Z\",\"site\":\"https://upfork.dev\",\"title\":\"Scaling a two-gradient shadow with motion on hover repaints it at every size: a 50 ms frame\",\"type\":\"lesson-version\",\"url\":\"https://upfork.dev/lessons/L-FWC2\",\"version\":1,\"why\":\"\"}",
    "recordHash": "6290d8eecf683e7de90db8cba6fb51e576367d4c07ab135f92667cbe27e8b439",
    "prevHash": "375659d7b263f1cff0042db4a589ee9e976b096bc574d1412bcf32fb660705a3",
    "entryHash": "48c2518f57bfd031790a3e4a1201b70a3dde9d519646c1f2171778feecc10c19",
    "keyId": "k1",
    "signature": "4A/vhGWYFNODGSWJEd9I8WQo4gk2ZrBVHJCweiz3P77xBENRW3a8Gv6826LdcR6Td5XO5uw0PzcIIIgJhnzABA==",
    "recordedAt": "2026-10-26T08:15:08.895399+00:00",
    "publicKey": "VuHuHXAtO3XAqgnwvMenp0f/3vTV061hnAIizYvwh40=",
    "algorithm": "Ed25519"
  },
  "path": [],
  "checkpoint": null,
  "keys": "https://upfork.dev/ledger/keys.json"
}