        {:else if kind === "setup"}
            <!-- the first run: one sheet, two cards, and a foot that closes
                 it. Every row here is a row that exists somewhere else —
                 the folder picker is You's, the sign-in is Community's —
                 because the tour's job is to say WHICH two things matter,
                 not to become a third place they can be changed. -->
            <div class="setup">
                <div class="sheet-title">{setup.reason === "preview" ? "Set up this phone" : "Welcome to SoulStream"}</div>
                <div class="sec-note">Your library, the catalog and the network, in one place. Two things make the rest of it work — neither is required now, and both live on a screen you can come back to.</div>

                <div class="sheet-sec">Where your music lives</div>
                <div class="sec-note">One folder is the library: everything saved or downloaded lands in it, and everything in it is in the library. Until you pick one it is a folder inside the app that nothing else on this phone can see.</div>
                <div class="setup-path">{setup.folder || "—"}</div>
                <div class="sheet-rows">
                    {@render row("folder", setup.picking ? "Picking…" : needsFolder() ? "Choose a folder" : "Choose a different folder", needsFolder() ? "somewhere on this phone's own storage" : "this one is yours", () => void chooseFolder())}
                    {#if !needsFolder() && setup.access === false}
                        {@render row("alert", "Allow all files access", "a folder on the phone's storage needs it — the system screen opens, come back after", () => void requestAccess())}
                    {/if}
                </div>

                <div class="sheet-sec">Soulseek</div>
                <div class="sec-note">Anything the library does not hold comes off the network: what Search finds, a song played from someone's copy, Save. The card asks for a username and a password and keeps them on this phone — nothing here does.</div>
                {#if needsAccount()}
                    <div class="sheet-rows">
                        {@render row("users", "Sign in on Community", "the card is on the Community tab", act(() => go("community")))}
                    </div>
                {:else}
                    <div class="sheet-info"><div class="kv"><span class="k">Signed in</span><span class="v">{slsk.username || slsk.savedUser}</span></div></div>
                {/if}

                <div class="setup-foot"><button class="btn btn-fill wide" onclick={() => void finishSetup()}>Start listening</button></div>
                <div class="sec-note" style="padding-bottom:16px">Nothing above is required. You → Set up this phone again opens it back up.</div>
            </div>
