    /* ── the first run stamps when it goes away, whatever closed it ────
       The foot's button calls finishSetup itself; the scrim, the back
       gesture and the Soulseek row (which navigates, and navigating clears
       the half sheet) do not — and a tour that ran is a tour that ran.
       finishSetup writes only in boot mode and only once, so all four
       doors land in the same place, and a PREVIEW opened from You writes
       nothing at all.

       untrack is not optional here: finishSetup calls closeHalf, which
       reads nav.half, which is exactly what this effect tracks. Read your
       own write in a Svelte 5 effect and the subtree dies painted. */
    let setupWasUp = false;
    $effect(() => {
        const up = nav.half?.kind === "setup";
        if (setupWasUp && !up) untrack(() => { void finishSetup(); });
        setupWasUp = up;
    });
