Phone welcome: the signed-out screen on iOS and Android
Both apps sign in through put.io OAuth in the browser and have no password form or sign-up link. Sign in opens the browser: ASWebAuthenticationSession on iOS, an Auth Tab on Android.
Proposed: neither app ships it yet. iOS ships a 240pt wordmark and one Log in button; Android ships one still kaomoji over Welcome!.
Kaomoji take turns over a mono yellow caption, with page dots under them. Each beat holds 2s and rolls up in 0.6s, then the loop restarts. Reduced motion holds the first beat.
┌( ಠ‿ಠ)┘Paste a magnet.1 · 0–2.6s
( ⌐■_■)put.io fetches it.2 · 2.6–5.2s
ᕕ( ᐛ )ᕗStream it anywhere.3 · 5.2–7.8s
(づ。◕‿‿◕。)づOr keep it offline.4 · 7.8–10.4s
Session expired
9:41
┌( ಠ‿ಠ)┘Paste a magnet.
( ⌐■_■)put.io fetches it.
ᕕ( ᐛ )ᕗStream it anywhere.
(づ。◕‿‿◕。)づOr keep it offline.
┌( ಠ‿ಠ)┘Paste a magnet.
Welcome back!
Your session expired. Sign in again to continue.
The roll keeps running; the title and lede change.
Browser open
9:41
┌( ಠ‿ಠ)┘
Almost there
Finish signing in in your browser, then come back here.
One still kaomoji and a text Cancel while the browser finishes.
Sign-in failed
9:41
(・_・;)
Welcome!
Sign-in didn’t finish. Nothing was saved, so you can try again.
A still kaomoji, a notice with the reason, a filled Try again.
Saved session unreadable
9:41
(・_・;)
Welcome!
The saved session on this device could not be read or stored safely. Reset clears it so you can sign in again.
Only when the stored session can't be read; the action becomes Reset and sign in.
headerlogo-retro-dark, 88 wide, centred in the top bar (iOS 44pt nav slot, Android 64dp top-app-bar slot)
rollkaomoji GT America 48 SemiBold · caption Berkeley Mono 15, --yellow-text-secondary, 8 below · 4 page dots 6 wide, 8 apart, 16 below, active --yellow-solid, rest --border
motionvertical roll, 2s hold, 0.6s --ease-in-out, loops · reduced motion holds beat 1 with its dot lit
typeWelcome! 40/48 Medium, tight tracking, 32 below the dots · lede 16/22 --text-secondary, 8 below
actionone full-width 56 pill, --yellow-solid / --primary-foreground, 16 Medium · Cancel is a text button in --yellow-text-secondary
statesexpired: Welcome back! · browser: still kaomoji, Almost there, Cancel · failure: still (・_・;), notice on --component-bg with a --red-solid warning-circle, Try again or Reset and sign in