TrackRow now renders the offline state the controller maintains:
- The offline button is stateful: cloud-download (none, click -> cache) ->
loader-circle accent (queued/downloading) -> circle-check accent (ready,
click -> uncache) -> triangle-alert red (failed, click -> retry). Shown on
surfaces that enable it AND on any row with active cache state.
- The unlock PADLOCK (user-requested, back from Tauri): a pulsing lock glyph
overlays the play cell while the track's CMAF bundle decrypts, driven by the
`unlocking` flag the row_sink toggles on UnlockStart/UnlockEnd. New lucide
lock.svg / lock-open.svg assets.
The context menu's "Make available offline" already routes to caching. Testable
loop: cache a track (album button or context menu) -> watch it download -> play
it offline -> padlock pulses during decrypt. qbz-slint compiles clean.
cc