Second review round for the sampled-contrast path (#560), plus the
Windows CI fix:
- `is_data_uri` byte-sliced the url, so a local image whose name opens
with a multibyte character panicked the static scanner. It reads the
prefix with `get` now.
- The ground walk only accepted a layer that begins with `url(`, while a
`background` shorthand may put color, position, size, or repeat tokens
before the image; such layers fell out of the sampled path. The call is
found anywhere in the layer and decoded from there. A fixture case pins
it, so the fixture and directory goldens gain one finding.
- The decoration gate scaled the missing size axis only for a single
`40px` token; `40px auto` and `auto 40px` now follow the image's aspect
ratio the same way.
- The linked-sheet url rewrite did its path math through the OS-flavored
helpers, which rendered `css/light.png` as `light.png` on Windows. It
uses the POSIX helpers on both directories, since a CSS url is POSIX on
every OS.
AI assistance: Claude Code (Claude Fable 5.1), on maintainer instruction.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>