🤖
My AI
Light map world, one confident blue accent, white glass surfaces. Every screen below: before (current app, problems tagged in red) → after (redesign, components labeled beneath each screen). Expand Shape code under any component for its TSX + Tailwind (shadcn/ui, Framer Motion m., lucide-react) — matching the app codebase.
All snippets below are TSX + Tailwind, matching the app (Next.js · TypeScript · shadcn/ui · Framer Motion via m. · lucide-react). Add these tokens so the class names resolve:
// tailwind.config.ts — theme.extend
colors: {
azure: { 100: "#E8F1FF", 500: "#3D8BFF", 600: "#1D6FF2" },
ink: { 900: "#17161C", 500: "#6C6B76", 300: "#9997A3" },
siren: "#ED2F4E", // LIVE only — never on buttons
paper: "#F6F5F2",
},
// wrap the app once for framer-motion:
// <LazyMotion features={domAnimation}> … use <m.div/> everywhere<div className="absolute inset-x-0 top-0 h-[244px] overflow-hidden">
<Image src={org.coverUrl} alt="" fill className="object-cover" priority />
</div><div className="pointer-events-none absolute inset-x-0 top-0 h-[244px] bg-[linear-gradient(180deg,rgba(23,22,28,.46),transparent_32%,transparent_58%,rgba(23,22,28,.34))]" />
<button className="absolute left-3.5 top-[62px] grid size-[34px] place-items-center rounded-full bg-ink-900/40 backdrop-blur-md"> <ChevronLeft className="size-4 text-white" /> </button>
<button onClick={() => share(org.url)} className="absolute right-14 top-[62px] grid size-[34px]
place-items-center rounded-full bg-ink-900/40 backdrop-blur-md">
<Share2 className="size-[15px] text-white" />
</button><button className="absolute right-3.5 top-[62px] grid size-[34px] place-items-center rounded-full bg-ink-900/40 backdrop-blur-md"> <MoreHorizontal className="size-[15px] text-white" /> </button>
<div className="absolute left-5 top-[198px] size-[84px] overflow-hidden rounded-[26px]
border-[3px] border-white shadow-[0_8px_22px_rgba(23,22,28,.2)]">
<Image src={org.logoUrl} alt="" fill className="object-cover" />
</div><h1 className="absolute left-5 top-[296px] text-[23px] font-extrabold tracking-[-0.02em] text-ink-900">
{org.name}
</h1>{org.verified && (
<span className="absolute left-[214px] top-[302px] grid size-[17px] place-items-center
rounded-full bg-azure-600"><Check className="size-2.5 stroke-[3.4] text-white" /></span>
)}<p className="absolute left-5 top-[326px] text-[12.5px] font-semibold text-ink-500">
@{org.handle} · {org.kind} · {org.campus}
</p><p className="absolute inset-x-5 top-[350px] text-[13.5px] leading-relaxed text-ink-500">
{org.about}
</p><div className="absolute inset-x-5 top-[404px] flex items-baseline gap-2 text-[12.5px] text-ink-500">
<b className="text-[14.5px] text-ink-900">{org.memberCount}</b> members
<Sep /> <b className="text-[14.5px] text-ink-900">{org.eventCount}</b> events hosted
<Sep /> since {org.foundedYear}
</div><Button onClick={follow} className="absolute left-5 top-[438px] h-[42px] w-[150px]
rounded-full bg-azure-500 text-sm font-bold lowercase text-white">follow</Button><Button variant="outline" onClick={() => share(org.url)}
className="absolute left-[180px] top-[438px] h-[42px] w-[136px] rounded-full
border-[1.5px] border-[#E8E6E1] bg-white text-sm font-bold text-ink-900">share page</Button><Button variant="outline" size="icon" className="absolute left-[326px] top-[438px] size-[42px] rounded-full border-[1.5px] border-[#E8E6E1] bg-white"><Star className="size-4" /></Button>
<h2 className="text-[10px] font-extrabold tracking-[0.14em] text-ink-300">NEXT MOMENT</h2>
<Link href={`/@${org.handle}/upcoming`}
className="text-[10.5px] font-bold text-azure-600">all dates ›</Link>{next && (
<Link href={`/@${org.handle}/upcoming`} className="relative block h-[58px] overflow-hidden rounded-[15px]">
<Image src={next.coverUrl} alt="" fill className="object-cover" />
<div className="absolute inset-0 bg-[linear-gradient(90deg,rgba(23,22,28,.88),rgba(23,22,28,.26))]" />
</Link>
)}<h3 className="absolute left-3 top-2.5 text-sm font-extrabold text-white">{next.title}</h3><h2 className="absolute left-5 top-[498px] text-[10px] font-extrabold tracking-[0.14em] text-ink-300"> HIGHLIGHTS </h2>
{org.highlights.map(h => (
<button key={h.id} className="size-[76px] shrink-0 overflow-hidden rounded-[24px]">
<Image src={h.coverUrl} alt="" width={76} height={76} className="size-full object-cover" />
</button>
))}<span className="mt-1.5 block w-[76px] text-center text-[10.5px] font-semibold text-ink-500">
{h.label}
</span><Tabs defaultValue="upcoming">
<TabsList className="absolute inset-x-5 top-[628px] h-[34px] justify-start gap-[30px]
rounded-none border-b border-[#E8E6E1] bg-transparent p-0">
{['UPCOMING','MOMENTS','PEOPLE'].map(t => (
<TabsTrigger key={t} value={t.toLowerCase()}
className="rounded-none border-b-[2.5px] border-transparent px-0 text-[12.5px]
font-bold tracking-[0.06em] text-ink-300 data-[state=active]:border-azure-500
data-[state=active]:text-ink-900 data-[state=active]:shadow-none">{t}</TabsTrigger>
))}
</TabsList>
</Tabs>{isOwner && (
<Button size="sm" onClick={openSyncSheet}
className="absolute right-5 top-[546px] h-7 gap-1.5 rounded-full bg-azure-500 px-3.5
text-[11.5px] font-bold text-white"><RefreshCw className="size-3.5" /> Sync Cal</Button>
)}<div className="grid grid-cols-3 gap-2">
{org.posts.map(p => (
<Link key={p.id} href={`/p/${p.id}`} className="relative aspect-square overflow-hidden rounded-xl">
<Image src={p.thumbUrl} alt="" fill className="object-cover" />
</Link>
))}
</div>{p.type === 'video' && (
<span className="absolute bottom-1.5 left-1.5 rounded-[5px] bg-ink-900/60 px-1.5 text-[9px]
font-bold text-white">▶ {p.duration}</span>
)}<nav className="absolute inset-x-0 bottom-0 flex h-[74px] items-start justify-around
border-t border-[#E8E6E1] bg-white/95 pt-3.5 backdrop-blur-xl">
{tabs.map(t => <TabItem key={t.id} {...t} active={t.id === 'page'} />)}
</nav><header className="sticky top-0 flex h-12 items-center justify-between border-b bg-[#F9F8F6] px-[18px]"> <button className="text-sm font-semibold text-ink-500">Cancel</button> <span className="text-sm font-extrabold">Editing your page</span> <button className="text-sm font-extrabold text-azure-600">Done</button> </header>
<button onClick={pickCover} className="absolute left-1/2 top-[60px] h-[30px] -translate-x-1/2
rounded-full bg-white/95 px-3.5 text-xs font-bold">change cover</button><button onClick={pickLogo} className="absolute -bottom-1 -right-1 grid size-[26px] place-items-center
rounded-full border-2 border-white bg-azure-500"><Camera className="size-3 text-white" /></button><div className="border-b-[1.5px] border-dashed border-azure-500 pb-1.5">
<ContentEditable html={org.name} onChange={setName}
className="text-xl font-extrabold outline-none" />
</div><p className="text-[11px] leading-snug text-ink-300">
{members} members · {events} events · since {year} — counted for you, nothing to fill in.
</p><button onClick={newHighlight} className="size-[62px] shrink-0 rounded-[20px] border-[1.5px]
border-dashed border-azure-500 text-2xl font-light text-azure-500">+</button><h2 className="text-[10px] font-extrabold tracking-[0.14em] text-ink-300">
YOUR POSTS · {posts.length} · NO LIMIT
</h2><button onClick={openAdd} className="aspect-square rounded-xl border-[1.5px] border-dashed
border-azure-500 bg-[#F5F9FF] text-azure-600">
<span className="block text-3xl font-light">+</span>
<span className="text-[11px] font-bold">add</span>
</button>{posts.map(p => (
<button key={p.id} onClick={() => openPost(p)} className="relative aspect-square overflow-hidden rounded-xl">
<Image src={p.thumbUrl} alt="" fill className="object-cover" />
</button>
))}<p className="sticky bottom-3 rounded-[10px] bg-white/95 py-[7px] text-center text-[11px] leading-snug text-ink-300">Tap anything to change it. Post as much as you like.</p>
<Sheet open={adding}><SheetContent side="bottom" className="h-[596px] rounded-t-3xl">…</SheetContent></Sheet><SheetDescription className="text-xs leading-snug text-ink-500"> Photos, videos, anything. No limit and no layout to fill in. </SheetDescription>
<div className="grid grid-cols-3 gap-2.5">
{SOURCES.map(s => (
<button key={s.id} onClick={s.open} className="h-16 rounded-2xl bg-paper">
<s.Icon className="mx-auto size-5" />
<span className="mt-1 block text-[11px] font-bold">{s.label}</span>
</button>
))}
</div>{recent.map(m => (
<button key={m.id} onClick={() => toggle(m.id)}
className={cn('relative aspect-square overflow-hidden rounded-xl',
picked.has(m.id) && 'ring-[3px] ring-azure-500')}>
<Image src={m.thumbUrl} alt="" fill className="object-cover" />
</button>
))}<span className={cn('absolute right-1.5 top-1.5 grid size-5 place-items-center rounded-full border-[1.5px] border-white',
picked ? 'bg-azure-500' : 'bg-ink-900/35')}>{picked && <Check className="size-2.5 text-white" />}</span><p className="text-center text-[11px] text-ink-300"> Keep scrolling for everything else — we never cap how much you post. </p>
<Button onClick={commit} className="h-12 w-full rounded-full bg-azure-500 text-[14.5px]
font-bold lowercase text-white">add {picked.size} to your page</Button><header className="absolute inset-x-4 top-[58px] flex h-[34px] items-center gap-2.5">
<Avatar className="size-[30px] rounded-[10px]"><AvatarImage src={org.logoUrl} /></Avatar>
<div className="flex-1"><p className="text-[15.5px] font-extrabold">{org.name}</p>
<p className="text-[10.5px] font-semibold text-ink-300">@{org.handle}</p></div>
<Button size="icon" variant="ghost" className="size-7 rounded-full bg-paper"><Settings className="size-4" /></Button>
</header><TabsList className="absolute inset-x-4 top-[106px] h-8 justify-start gap-[52px] rounded-none border-b border-[#E8E6E1] bg-transparent p-0">…</TabsList>
<h2 className="absolute left-4 top-[150px] text-2xl font-extrabold tracking-[-0.02em]">
{format(cursor, 'MMMM')}
</h2><Select value={range} onValueChange={setRange}>
<SelectTrigger className="absolute right-[78px] top-[154px] h-[26px] rounded-full bg-paper
px-[11px] text-[11.5px] font-bold">2 weeks</SelectTrigger>
<SelectContent><SelectItem value="2w">2 weeks</SelectItem><SelectItem value="m">Month</SelectItem></SelectContent>
</Select><Button variant="outline" onClick={goToday} className="absolute right-4 top-[154px] h-[26px]
rounded-full border-[1.5px] px-3 text-[11.5px] font-bold">Today</Button><div className="absolute inset-x-4 top-[190px] grid grid-cols-7 text-center text-[10px]
font-bold text-ink-300">{DOW.map(d => <span key={d}>{d}</span>)}</div><button onClick={() => select(day)} className="relative h-[62px] w-full">
<span className="text-sm font-semibold">{day.getDate()}</span>
</button>{isToday(day) && <span className="absolute inset-x-0 top-0 mx-auto size-[30px] rounded-full bg-azure-500" />}{isSelected(day) && <span className="absolute inset-x-0 -top-0.5 mx-auto size-[34px] rounded-full
border-2 border-azure-600" />}{day.events[0] && (
<Image src={day.events[0].coverUrl} alt="" width={36} height={22}
className="absolute inset-x-0 bottom-1.5 mx-auto rounded-md object-cover" />
)}<Sheet.Content side="bottom" modal={false}
className="absolute inset-x-0 bottom-0 h-[414px] rounded-t-3xl border-t bg-white
shadow-[0_-14px_34px_rgba(16,15,18,.14)]">{children}</Sheet.Content><Sheet.Title className="absolute left-5 top-[26px] text-[17px] font-extrabold">
{format(selected, 'EEEE, MMMM d')}
</Sheet.Title><p className="absolute left-5 top-[49px] text-[11.5px] font-semibold text-ink-500">
{n} events you're hosting · {going} going
</p><article className="absolute inset-x-5 top-[78px] h-[104px] overflow-hidden rounded-2xl">
<Image src={ev.coverUrl} alt="" fill className="object-cover" />
<div className="absolute inset-0 bg-[linear-gradient(90deg,rgba(23,22,28,.86),rgba(23,22,28,.24))]" />
</article>{ev.isLive && <Badge className="bg-siren text-[9px] font-extrabold tracking-[0.08em]">LIVE</Badge>}<Button size="sm" variant="secondary" className="absolute right-[34px] top-[146px] h-[26px] rounded-full bg-white/90 px-3 text-[11.5px] font-bold">manage</Button>
<li className="flex h-[74px] items-center gap-3 rounded-2xl bg-paper p-2.5">
<Image src={ev.coverUrl} alt="" width={54} height={54} className="rounded-xl object-cover" />
<div><p className="text-sm font-extrabold">{ev.title}</p>
<p className="text-[11px] text-ink-500">{ev.time} · {ev.place} · {ev.going} going</p>
{ev.source && <p className="text-[10.5px] font-bold text-azure-600">imported from {ev.source}</p>}</div>
</li><Button onClick={() => openComposer({ date: selected })}
className="absolute inset-x-5 top-[284px] h-[46px] rounded-full bg-azure-500 text-sm
font-bold lowercase text-white">post an event on this day</Button><Button variant="outline" onClick={() => share(dayUrl)}
className="absolute inset-x-5 top-[340px] h-[42px] rounded-full border-[1.5px] text-[13.5px]
font-bold">share this day's line-up</Button>{!day.events.length && (
<span className="absolute inset-x-0 bottom-1.5 mx-auto h-[22px] w-9 rounded-md
border border-dashed border-[#E8E6E1]" />
)}<Sheet.Title className="absolute left-5 top-[26px] text-[17px] font-extrabold">
Nothing on {format(selected, 'MMMM d')} yet
</Sheet.Title><Sheet.Description className="absolute inset-x-5 top-[50px] text-[12.5px] leading-relaxed text-ink-500">An empty page is the one thing that loses people.</Sheet.Description>
<Button onClick={openComposer} className="absolute inset-x-5 top-[112px] h-12 rounded-full
bg-azure-500 text-[14.5px] font-bold lowercase text-white">post your first event</Button><Card className="absolute inset-x-5 top-[174px] h-[104px] rounded-2xl border-[1.5px] border-dashed border-azure-500 bg-white p-3.5">…</Card>
<p className="text-[11.5px] leading-snug text-ink-500"> Google, Apple or Outlook. Events land here as drafts — you choose which ones go public. </p>
<Button size="sm" onClick={openSync} className="h-6 rounded-full bg-azure-500 px-3
text-[11.5px] font-bold lowercase text-white">set up sync</Button><p className="absolute inset-x-5 top-[296px] text-center text-[11.5px] leading-relaxed text-ink-300">Tap any empty day above to post straight onto it.</p>
<ToggleGroupItem value="hosted" className="h-[30px] rounded-full bg-ink-900 px-3.5 text-[11.5px]
font-bold text-white">Hosted · {hosted.length}</ToggleGroupItem><ToggleGroupItem value="tagged" className="h-[30px] rounded-full bg-paper px-3.5 text-[11.5px]
font-bold text-ink-500">Tagged · {tagged.length}</ToggleGroupItem><Button size="sm" onClick={openCamera} className="h-[30px] rounded-full bg-azure-500 px-3.5
text-[11.5px] font-bold lowercase text-white">+ add</Button><h2 className="text-[10px] font-extrabold tracking-[0.14em] text-ink-300"> PINNED — WHAT YOU WANT PEOPLE TO SEE FIRST </h2>
<article className="relative h-[150px] overflow-hidden rounded-[18px]">
<Image src={pinned.coverUrl} alt="" fill className="object-cover" />
<div className="absolute inset-0 bg-[linear-gradient(180deg,transparent_44%,rgba(23,22,28,.72))]" />
</article><div className="grid grid-cols-3 gap-2">
{moments.map(m => (
<Image key={m.id} src={m.coverUrl} alt="" width={113} height={113}
className="aspect-square rounded-[14px] object-cover" />
))}
</div><p className="text-center text-[11px] font-semibold text-ink-300"> Moments stay up for 30 days unless you pin them. </p>
<Card className="rounded-[18px] bg-[#FBF6EC] p-4">
<p className="text-[13.5px] font-extrabold">Your page link</p>
<p className="mt-1 text-sm font-bold text-azure-600">{org.publicUrl}</p>
</Card><Button size="sm" onClick={() => copy(org.publicUrl)} className="h-[26px] rounded-full
bg-azure-500 px-3 text-[11.5px] font-bold lowercase text-white">copy link</Button><Button size="sm" variant="outline" onClick={makePoster}
className="h-[26px] rounded-full border-[1.5px] px-3 text-[11.5px] font-bold">QR poster</Button><Button size="sm" variant="outline" onClick={openInvite}
className="h-[26px] rounded-full border-[1.5px] px-3 text-[11.5px] font-bold">invite</Button><h2 className="text-[10px] font-extrabold tracking-[0.14em] text-ink-300">
LEADERSHIP · {leaders.length}
</h2><li className="flex h-[54px] items-center gap-2.5 rounded-2xl bg-paper px-2.5">
<Avatar className="size-9"><AvatarImage src={p.avatarUrl} /></Avatar>
<div className="flex-1"><p className="text-[13.5px] font-bold">{p.name}</p>
<p className="text-[11px] text-ink-500">{p.role}</p></div>
<Button variant="ghost" size="sm" className="text-[11.5px] text-ink-300">manage</Button>
</li><div className="flex items-center">
{members.slice(0,5).map((m,i) => (
<Avatar key={m.id} style={{ marginLeft: i ? -8 : 0 }}
className="size-[38px] ring-[2.5px] ring-white"><AvatarImage src={m.avatarUrl} /></Avatar>
))}
<p className="ml-3 text-[12.5px] text-ink-500">and {members.length - 5} more</p>
</div><Card className="rounded-2xl border-[1.5px] border-dashed border-azure-500 bg-white p-4"> <p className="text-[13.5px] font-extrabold">Grow past your own contacts</p> <p className="mt-1 text-[11.5px] leading-snug text-ink-500">…lands on your page, not a sign-up wall.</p> </Card>
<Sheet.Content side="bottom" className="h-[614px] rounded-t-3xl bg-white">{children}</Sheet.Content><Sheet.Title className="text-[19px] font-extrabold tracking-[-0.01em]">Bring your calendar in</Sheet.Title>
<Sheet.Description className="text-[12.5px] leading-relaxed text-ink-500"> We read the calendar you pick and turn each event into a <b>draft</b> on your page. Nothing goes public until you say so. </Sheet.Description>
<Card className="rounded-2xl bg-[#FBF6EC] p-3.5"> <Badge className="bg-azure-500 text-[9px] font-extrabold">RECOMMENDED</Badge> <p className="mt-2 text-sm font-extrabold">Paste a calendar link</p> </Card>
<Button size="sm" onClick={openPaste} className="h-[26px] rounded-full bg-azure-500 px-3
text-[11.5px] font-bold lowercase text-white">paste link</Button><button className="flex h-[62px] w-full items-center rounded-2xl bg-paper px-3.5"> <div><p className="text-[13.5px] font-bold">Connect Google Calendar</p> <p className="text-[11px] text-ink-500">Read-only — we never write to it.</p></div> <ChevronRight className="ml-auto size-[15px] text-ink-300" /> </button>
<button className="flex h-[62px] w-full items-center rounded-2xl bg-paper px-3.5"> <div><p className="text-[13.5px] font-bold">Upload an .ics file</p> <p className="text-[11px] text-ink-500">One-off import. Does not stay in sync.</p></div> </button>
<Card className="rounded-2xl border-[1.5px] bg-white p-3.5"> <p className="text-xs font-extrabold tracking-[0.06em] text-ink-300">WHAT PEOPLE WILL SEE</p> <p className="mt-2 text-[11.5px] leading-snug text-ink-500">Only the drafts you publish.</p> </Card>
<Button className="absolute inset-x-[22px] bottom-6 h-[46px] rounded-full bg-azure-500 text-sm font-bold lowercase text-white">connect a calendar</Button>
<Dialog open={step === 'permission'}>
<DialogOverlay className="bg-[rgba(16,15,18,.52)]" />
<DialogContent className="rounded-[22px] p-0 shadow-[0_20px_60px_rgba(16,15,18,.34)]">…</DialogContent>
</Dialog><DialogTitle className="text-[17px] font-extrabold leading-snug tracking-[-0.01em]"> What2Do wants to read your calendar </DialogTitle>
<p className="text-xs font-semibold text-ink-500">{googleAccount.email}</p>{SCOPES.map(s => (
<li key={s.id} className="flex gap-3">
<span className={cn('grid size-5 place-items-center rounded-full', s.granted ? 'bg-mint' : 'bg-paper')}>
{s.granted ? <Check className="size-3 text-white" /> : <Minus className="size-3 text-ink-300" />}
</span>
<div><p className="text-[13px] font-bold">{s.title}</p>
<p className="text-[11px] text-ink-300">{s.note}</p></div>
</li>
))}<Button onClick={grant} className="h-11 flex-1 rounded-full bg-azure-500 text-[13.5px] font-bold
text-white">Allow</Button><Button variant="outline" onClick={close}
className="h-11 w-[126px] rounded-full border-[1.5px] text-[13.5px] font-bold">Cancel</Button><Sheet open={step === 'syncing'}>
<SheetContent side="bottom" className="h-[400px] rounded-t-3xl">…</SheetContent>
</Sheet><p className="text-[12.5px] font-semibold text-ink-500">
Reading {source.name} · {done} of {total} events
</p><Progress value={(done / total) * 100} className="h-2 bg-paper" /><ProgressPrimitive.Indicator className="h-2 rounded-full bg-azure-500"
style={{ width: `${(done / total) * 100}%` }} />{feed.map(f => (
<li key={f.id} className={cn('flex h-[52px] items-center gap-3 rounded-2xl px-3',
f.done ? 'bg-[#F6FBF8]' : 'bg-paper')}>
<StatusDot done={f.done} />
<div><p className="text-[13px] font-bold">{f.title}</p>
<p className={cn('text-[11px] font-semibold', f.done ? 'text-mint' : 'text-ink-300')}>{f.state}</p></div>
</li>
))}<p className="text-center text-[11.5px] leading-relaxed text-ink-300"> You can close this — we'll finish in the background and tell you when it's done. </p>
<Button variant="outline" onClick={dismiss}
className="h-11 w-full rounded-full border-[1.5px] text-[13.5px] font-bold">run in the background</Button><Sheet open={step === 'done'}>
<SheetContent side="bottom" className="h-[404px] rounded-t-3xl">…</SheetContent>
</Sheet><span className="mx-auto grid size-14 place-items-center rounded-full bg-mint"> <Check className="size-[30px] stroke-[3.2] text-white" /> </span>
<SheetTitle className="text-center text-[19px] font-extrabold">{n} events imported</SheetTitle><SheetDescription className="text-center text-[12.5px] leading-relaxed text-ink-500"> All saved as <b>drafts</b>. Nothing is public yet — you decide what people see. </SheetDescription>
<Card className="rounded-2xl bg-[#FBF6EC] p-4">
<p className="text-[13px] font-bold">{upcoming} upcoming · {past} already passed</p>
<p className="mt-1 text-[11px] leading-snug text-ink-500">Past events were skipped.</p>
</Card><Button onClick={goReview} className="h-12 w-full rounded-full bg-azure-500 text-[14.5px]
font-bold lowercase text-white">review and publish</Button><Button variant="outline" onClick={close}
className="h-[42px] w-full rounded-full border-[1.5px] text-[13.5px] font-bold">keep them all as drafts</Button><Alert className="rounded-2xl bg-[#EAF9EF]"> <CheckCircle2 className="size-5 text-mint" /> <AlertTitle className="text-[13.5px] font-extrabold">Google Calendar connected</AlertTitle> </Alert>
<AlertDescription className="text-[11.5px] text-ink-500">
Last checked {ago(sync.lastRun)} · {sync.found} events found · next check in {mins} min
</AlertDescription><li className="flex min-h-[86px] items-center rounded-2xl bg-paper px-3.5">
<div className="flex-1"><p className="text-[13.5px] font-bold">{e.title}</p>
<p className="text-[11px] text-ink-500">{e.when}</p></div>
</li><button onClick={() => edit(e.id, 'place')}
className="w-[148px] truncate border-b border-[#DCDAD4] pb-1 text-left text-[11.5px]
font-medium text-ink-300">add location</button><button onClick={() => edit(e.id, 'place')}
className="w-[148px] truncate border-b border-[#C9D6EA] pb-1 text-left text-[11.5px]
font-bold text-ink-900">{e.place}</button>{!e.published && <span className="text-[9.5px] font-extrabold tracking-[0.06em] text-ink-300">DRAFT</span>}<Button size="sm" onClick={syncNow} className="h-6 rounded-full bg-azure-500 px-3 text-[10.5px]
font-bold lowercase text-white">sync now</Button><Switch checked={e.published} onCheckedChange={v => publish(e.id, v)}
className="data-[state=checked]:bg-azure-500" /><p className="text-[11.5px] leading-relaxed text-ink-500">
{live} are live on your page. The other {draft} stay as drafts.
</p><Card className="rounded-2xl bg-[#FBF6EC] p-3.5"> <p className="text-xs font-extrabold tracking-[0.06em] text-ink-300">WHERE THEY SHOW UP</p> <p className="mt-2 text-[11.5px] leading-relaxed text-ink-500">…and on the map at their location.</p> </Card>
<Button variant="outline" onClick={disconnect}
className="h-[42px] w-full rounded-full border-[1.5px] text-[13.5px] font-bold">disconnect calendar</Button><Sheet open={editing === 'place'}><SheetContent side="bottom" className="h-[488px] rounded-t-3xl">…</SheetContent></Sheet><Input autoFocus value={q} onChange={e => setQ(e.target.value)}
className="h-[34px] rounded-none border-0 border-b-[1.5px] border-azure-500 px-0 text-base
font-semibold focus-visible:ring-0" />{places.map(p => (
<button key={p.id} onClick={() => choose(p)} className="flex h-12 w-full items-center gap-3 border-b">
<MapPin className="size-[15px] text-ink-300" />
<span className="flex-1 text-left"><span className="block text-sm font-semibold">{p.name}</span>
<span className="block text-[10.5px] text-ink-300">used {p.uses} times</span></span>
</button>
))}{p.matches(q) && <Badge className="h-5 rounded-md bg-azure-100 px-2 text-[9.5px] font-extrabold text-azure-600">MATCH</Badge>}<Button onClick={commit} className="h-[46px] w-full rounded-full bg-azure-500 text-sm font-bold
lowercase text-white">use {chosen.name}</Button><Sheet.Content side="bottom" className="h-[352px] rounded-t-3xl bg-white">{children}</Sheet.Content><Sheet.Title className="text-[19px] font-extrabold">Switch account</Sheet.Title>
<Sheet.Description className="text-xs text-ink-500"> Both stay signed in. Switching never asks for a password. </Sheet.Description>
<li className="flex h-[62px] items-center gap-3 rounded-2xl bg-azure-100 px-3">
<Avatar className="size-10 rounded-[13px]"><AvatarImage src={org.logoUrl} /></Avatar>
<div className="flex-1">…</div>
<span className="grid size-5 place-items-center rounded-full bg-azure-500"><Check className="size-3 text-white" /></span>
</li><Badge className="h-4 rounded bg-azure-600 px-1.5 text-[8.5px] font-extrabold tracking-[0.06em]">ORG</Badge>
<li className="flex h-[62px] items-center gap-3 rounded-2xl bg-paper px-3">
<Avatar className="size-10"><AvatarImage src={me.avatarUrl} /></Avatar>
<div className="flex-1"><p className="text-sm font-extrabold">{me.name}</p>
<p className="text-[11.5px] text-ink-500">@{me.handle} · {me.unread} unread</p></div>
</li><Button size="sm" onClick={() => switchTo(acct.id)} className="h-[26px] rounded-full
bg-azure-500 px-3 text-[11.5px] font-bold lowercase text-white">switch</Button><button className="h-[52px] w-full rounded-2xl border-[1.5px] border-dashed border-[#E8E6E1] bg-white px-3.5 text-left"> <p className="text-[13.5px] font-bold">Create an organization</p> <p className="text-[11px] text-ink-500">Attached to this account — one page, one minute</p> </button>
<p className="text-center text-[11px] text-ink-300"> Same phone number, same login — switch as often as you like. </p>
<Card className="flex h-[62px] items-center gap-3 rounded-2xl bg-paper px-3">
<Avatar className="size-10 rounded-[13px]"><AvatarImage src={org.logoUrl} /></Avatar>
<div><p className="text-sm font-extrabold">{org.name}</p>
<p className="text-[11.5px] text-ink-500">org page · managed by @{owner.handle}</p></div>
</Card>{rows.map(r => (
<button key={r.id} className="flex h-[54px] w-full items-center rounded-[14px] border bg-white px-3.5">
<div className="flex-1 text-left"><p className="text-[13.5px] font-bold">{r.title}</p>
<p className="text-[11px] text-ink-500">{r.value}</p></div>
<ChevronRight className="size-[15px] text-ink-300" />
</button>
))}<Button variant="outline" onClick={() => switchTo('personal')}
className="h-[46px] w-full rounded-full border-[1.5px] text-[13.5px] font-bold">
back to my personal account
</Button><p className="text-center text-[11px] leading-relaxed text-ink-300"> Your organization is attached to your personal account. Deleting the page never deletes your account. </p>
<Button variant="ghost" size="icon" onClick={router.back}
className="absolute left-3.5 top-[60px] size-[34px] rounded-full bg-paper">
<ChevronLeft className="size-4" />
</Button><h1 className="absolute inset-x-5 top-28 text-[26px] font-extrabold leading-[1.18] tracking-[-0.025em]">Create your<br />organization</h1>
<p className="absolute inset-x-5 top-[180px] text-[13px] leading-relaxed text-ink-500"> One page. Press create and it exists — you can add photos and details any time after. </p>
<div className="border-b-[1.5px] pb-2"> <Label className="text-[10.5px] font-bold tracking-[0.1em] text-ink-300">NAME</Label> <Input className="border-0 px-0 text-[17px] font-bold focus-visible:ring-0" /> </div>
<div className="border-b-[1.5px] border-azure-500 pb-2"> <Label className="text-[10.5px] font-bold tracking-[0.1em] text-ink-300">HANDLE</Label> <Input defaultValue="@" className="border-0 px-0 text-[17px] font-bold focus-visible:ring-0" /> </div>
{status === 'free' && (
<span className="text-[11.5px] font-bold text-mint">✓ available</span>
)}<p className="text-center text-[10.5px] font-bold tracking-[0.1em] text-ink-300"> OR CONTINUE WITH </p>
<Button variant="outline" onClick={() => signIn('google')}
className="h-[50px] w-full rounded-full border-[1.5px] text-sm font-bold">
Continue with Google
</Button><Button onClick={() => signIn('apple')}
className="h-[50px] w-full rounded-full bg-ink-900 text-sm font-bold text-white">
Continue with Apple
</Button><button className="w-full text-center text-[12.5px] font-semibold text-azure-600"> Have a JHU email? Verify it later for a campus badge. </button>
<Button onClick={createOrg} className="h-[52px] w-full rounded-full bg-azure-500 text-[15px]
font-bold lowercase text-white">create</Button><p className="text-center text-[11.5px] leading-relaxed text-ink-300"> That's the whole sign-up. You'll land straight on your new page. </p>
<header className="absolute inset-x-0 top-0 z-[8] h-[116px] border-b border-[#E8E6E1] bg-white shadow-[0_2px_12px_rgba(20,18,28,0.05)]">…</header>
<button className="flex items-baseline gap-[5px]"><span className="text-[21px] font-extrabold tracking-[-0.4px] text-ink-900">{area.name}</span><Chevron /></button><button onClick={openLiveList} className="flex items-center gap-1.5">
<span className="size-1.5 rounded-full bg-[#ED2F4E] motion-safe:animate-pulse" />
<span className="text-[11.5px] font-bold text-[#ED2F4E]">{liveCount} live now</span>
<span className="text-[11.5px] font-semibold text-[#8D8A96]">· {friendsOut} friends out</span>
</button><span className="flex h-7 items-center gap-1 rounded-2xl bg-[#F5F3EF] pl-2 pr-2.5 text-[12.5px] font-bold">🔥 {streak}</span><IconButton icon={Calendar} className="size-7 rounded-full bg-[#F5F3EF]" /><IconButton icon={Bell} className="size-7 rounded-full bg-[#F5F3EF]" /><div className="absolute inset-x-0 top-[116px] bottom-[402px]"><Map mapStyle={SHIPPED_STYLE} pitch={55} /></div><button className="grid size-8 place-items-center rounded-full bg-white text-[11px] font-bold shadow-[0_3px_12px_rgba(20,18,28,0.14)]">2D</button>
<Marker>{photoSquircle + playGlyph + liveDot}{hostCircle}</Marker><span className="pointer-events-none absolute rounded-full blur-[2px]" style={{ width: 40 + ev.count * 1.8, background: 'radial-gradient(closest-side,rgba(255,99,64,0.26),rgba(255,99,64,0))' }} /><Marker longitude={me.lng} latitude={me.lat}><YouDot /></Marker><svg className="pointer-events-none absolute inset-0 z-[4]"><path d={walkingPath(me, ev)} stroke="#1D6FF2" strokeWidth="2.5" strokeDasharray="5 6" opacity=".75" fill="none" /></svg><div className="flex items-center px-4 pt-[9px]"><span className="mr-2 size-[7px] rounded-full bg-[#ED2F4E] motion-safe:animate-pulse" /><h2 className="text-[19px] font-extrabold tracking-[-0.3px]">Live around you</h2></div>
<button className="relative h-[150px] w-[176px] overflow-hidden rounded-[18px] text-left">
<Image src={ev.frame} className="absolute inset-0 brightness-50 saturate-[.85]" />
<span className="absolute inset-0 bg-gradient-to-b from-transparent via-30% to-[#141518]/70" />
{badge}{rank}{title}{velocity}
</button><span className="absolute left-2.5 top-2.5 inline-flex h-[17px] items-center gap-1 rounded-[9px] bg-[#FF6340] px-[7px]"><TriangleUp className="text-white" /><span className="text-[8.5px] font-extrabold tracking-[0.08em] text-white">TRENDING</span></span>
<span className="absolute bottom-3 left-[11px] flex items-center gap-[5px]">
<svg width="30" height="12"><polyline points={spark(ev.history)} fill="none" stroke="#FF6340" strokeWidth="2" /></svg>
<span className="text-[10px] font-bold text-[#FFB29E]">+{ev.delta10m} in 10 min</span>
</span><div className="relative h-[150px] w-[176px] rounded-[18px] border-[1.5px] border-dashed border-[#1D6FF2]/50 bg-white">{badge}{title}{fraction}{progress}{cta}</div><span className="text-[26px] font-extrabold tracking-[-0.5px] text-azure-600">{ev.committed}</span><span className="text-[13px] font-bold text-[#9997A3]">/{ev.goal} in</span>
<span className="mt-2 block h-1.5 rounded-full bg-[#E7EFFB]"><span className="block h-full rounded-full bg-azure-600" style={{ width: `${ev.committed / ev.goal * 100}%` }} /></span><button onClick={commit} className="absolute inset-x-2.5 bottom-[9px] grid h-[26px] place-items-center rounded-[13px] bg-azure-600 text-[12px] font-extrabold text-white">i'm in</button><button className="relative h-[52px] w-full overflow-hidden rounded-[15px] bg-gradient-to-br from-[#2B2D31] to-[#141518] text-left">{liveBadge}{title}{distance}</button><div className="pointer-events-none absolute inset-x-0 top-0 h-40 bg-gradient-to-b from-[#9A3412]/50 to-transparent" />
<button className="absolute inset-x-4 top-16 flex h-[46px] items-center
gap-2 rounded-full border border-[#26252B] bg-[#1A191E] px-4
text-[14.5px] text-[#8E8C96]">
<Search className="size-[17px]" strokeWidth={1.9} />
Search events, people, or organizations
</button><h1 className="absolute left-5 top-[120px] font-serif text-[37px] font-bold leading-none text-[#F4F3F6]">Explore</h1>
<button className="inline-flex h-[42px] items-center gap-1.5 rounded-xl border border-[#26252B] bg-[#17161B] px-[15px] text-sm font-semibold text-[#F4F3F6]"> <MapPin className="size-4 text-[#F97316]" /> San Francisco </button>
<button data-active={active}
className="h-[42px] rounded-full border border-[#26252B] bg-[#17161B]
px-5 text-[15px] font-semibold text-[#A5A3AD]
data-[active=true]:border-[#F0654A] data-[active=true]:bg-[#F0654A]
data-[active=true]:font-bold data-[active=true]:text-[#1A120C]" /><h2 className="text-[22px] font-extrabold tracking-[-0.01em] text-[#F4F3F6]">Happening near you</h2>
<button className="text-[13px] font-semibold text-[#F97316]"> See all on map › </button>
<div className="grid grid-cols-2 gap-x-3 gap-y-3.5">
<div>
<div className="relative h-[130px] overflow-hidden rounded
shadow-[0_1px_8px_rgba(0,0,0,0.5)]">
<Image src={ev.cover} alt="" fill className="object-cover" />
<div className="absolute inset-0 bg-gradient-to-b
from-black/5 via-transparent to-black/30" />
<LiveBadge />
</div>
<p className="mt-2 text-[15.5px] font-bold tracking-[-0.01em]
text-[#F4F3F6]">{ev.title}</p>
<p className="mt-px text-xs font-medium text-[#8E8C96]">{ev.place}</p>
<p className="mt-1 flex items-center gap-[5px] text-[11.5px]
font-semibold text-[#A5A3AD]">
<Users className="size-[13px]" strokeWidth={2} />{ev.count}/10</p>
</div>
</div><span className="absolute left-2 top-2 z-[2] inline-flex h-6 items-center
gap-1.5 rounded bg-[#100F12]/70 px-[9px] text-[10.5px] font-extrabold
tracking-[0.09em] text-white ring-[1.5px] ring-inset
ring-[#F5304A]/85">
<m.i className="size-1.5 rounded-full bg-[#ED2F4E]"
animate={{ opacity: [1, 0.35, 1] }}
transition={{ duration: 1.6, repeat: Infinity }} />
LIVE
</span><span className="absolute left-2 top-2 z-[2] rounded bg-[#100F12]/45 px-2 py-[3px] text-[10px] font-extrabold tracking-[0.12em] text-white/85">PARTY</span>
<div className="-mr-[70px] flex gap-3 overflow-x-auto">
<button className="relative h-[118px] w-[232px] flex-none
overflow-hidden rounded shadow-[0_1px_8px_rgba(0,0,0,0.5)]">
<Image src={t.cover} alt="" fill className="object-cover" />
<div className="absolute inset-0 bg-gradient-to-b
from-black/5 via-transparent to-black/30" />
<CategoryTag>PARTY</CategoryTag>
<LiveBadge className="left-auto right-2" />
</button>
</div><nav className="absolute inset-x-0 bottom-0 flex h-[86px] items-start
justify-around bg-[#0E0D10] px-2 pt-[11px]">
{tabs.map((t) => (
<button key={t.label} data-active={t.active}
className="relative flex min-w-[52px] flex-col items-center
gap-[3px] text-[11px] font-semibold text-[#77747E]
data-[active=true]:text-azure-500">
<t.icon className="size-6" strokeWidth={1.8} />
{t.label}
</button>
))}
</nav><span className="-mt-[3px] flex flex-col items-center gap-0.5">
<span className="grid h-7 w-12 place-items-center rounded-[10px]
bg-azure-600 shadow-[0_3px_12px_rgba(29,111,242,0.45)]">
<Plus className="size-[18px] text-white" strokeWidth={2.5} />
</span>
<span className="text-[11px] font-semibold text-azure-600">Host</span>
</span><span className="absolute -top-1 right-0.5 grid h-[17px] min-w-[17px] place-items-center rounded-full border-2 border-[#0E0D10] bg-azure-600 px-1 text-[10px] font-bold text-white">2</span>
<div className="pointer-events-none absolute inset-x-0 top-0 h-60 bg-gradient-to-b from-[#6E71F5]/15 to-transparent" />
<h1 className="absolute left-5 top-[58px] text-[34px] font-extrabold tracking-[-0.03em] text-ink-900">July</h1>
<button className="inline-flex h-[38px] items-center rounded-full bg-white/65 px-[17px] text-[13.5px] font-bold text-ink-900 shadow-[0_2px_10px_rgba(20,18,28,0.10),inset_0_0_0_0.5px_rgba(255,255,255,0.7)] backdrop-blur-[14px]">Today</button>
<button className="grid size-[38px] place-items-center rounded-full
bg-white/65 shadow-[0_2px_10px_rgba(20,18,28,0.10),inset_0_0_0_0.5px_rgba(255,255,255,0.7)]
backdrop-blur-[14px]">
<SlidersHorizontal className="size-[17px] text-ink-900" strokeWidth={2} />
</button>
{/* same shell with <Search /> — one pattern, two instances */}<div className="grid grid-cols-7 justify-items-center">
{["Sun","Mon","Tue","Wed","Thu","Fri","Sat"].map((d) => (
<span key={d} className="text-[11px] font-semibold text-ink-300">{d}</span>
))}
</div><span data-out={isOutsideMonth} className="text-base font-medium
tabular-nums text-ink-500 data-[out=true]:text-[#CFCDD4]">{n}</span><button className="relative size-11 overflow-hidden rounded-[11px]
shadow-[0_1px_5px_rgba(20,18,28,0.18)]">
<Image src={day.event.cover} alt="" fill className="object-cover" />
</button><button className="relative size-11 overflow-hidden rounded-[11px]
shadow-[0_0_0_2px_#FFFFFF,0_0_0_4.5px_#1D6FF2,0_2px_8px_rgba(20,18,28,0.2)]">
<Image src={day.event.cover} alt="" fill className="object-cover" />
</button><span className="text-2xl leading-none">☀️</span>
<m.div initial={{ y: 60 }} animate={{ y: 0 }}
className="absolute inset-x-0 bottom-0 top-[486px] rounded-t-[26px]
bg-white/70 backdrop-blur-2xl backdrop-saturate-150
shadow-[0_-6px_30px_rgba(20,18,28,0.10),inset_0_1px_0_rgba(255,255,255,0.8)]" /><div className="absolute left-1/2 top-2 h-1 w-9 -translate-x-1/2 rounded-full bg-ink-900/15" />
<p className="text-center text-[14.5px]">
<b className="font-bold text-ink-900">Today</b>{" "}
<span className="font-medium text-ink-300">Wednesday · July 8</span>
</p><div className="mx-4 flex gap-[13px] overflow-hidden rounded-[18px]
bg-gradient-to-br from-[#EFE7FB] to-[#FDF3E6] p-3
shadow-[0_2px_12px_rgba(20,18,28,0.10)]">
<Image src={event.cover} alt="" className="h-[108px] w-[92px]
flex-none rounded-xl object-cover" />
<div className="min-w-0 pt-1">
{/* <TimeChip/> */}
<h3 className="mt-[9px] text-[19px] font-extrabold tracking-tight
text-ink-900">Spring Fest Concert</h3>
{/* <AttendeeStack/> */}
</div>
</div><Badge className="inline-flex h-[26px] items-center rounded-full bg-azure-600 px-3 text-xs font-bold text-white">Tonight at 8pm</Badge>
<div className="flex items-center gap-[7px]">
<div className="flex">
{going.map((p, i) => (
<Image key={p.id} src={p.photo} alt="" className={cn(
"size-[22px] rounded-full border-2 border-white",
i > 0 && "-ml-2")} />
))}
</div>
<span className="text-[13px] font-semibold text-ink-900">👍 Going</span>
</div><div className="absolute right-4 top-[698px] z-10 flex gap-1
rounded-full bg-white/70 p-1 backdrop-blur-[16px]
shadow-[0_4px_16px_rgba(20,18,28,0.14),inset_0_0_0_0.5px_rgba(255,255,255,0.7)]">
<button className="grid h-9 w-11 place-items-center rounded-full
bg-ink-900"><CalendarDays className="size-[17px] text-white" /></button>
<button className="grid h-9 w-11 place-items-center rounded-full">
<List className="size-[17px] text-ink-900" /></button>
</div><nav className="absolute inset-x-0 bottom-0 flex h-[86px] items-start
justify-around bg-white px-2 pt-[11px] before:absolute
before:inset-x-0 before:-top-8 before:h-8 before:bg-gradient-to-b
before:from-white/0 before:to-white">
{tabs.map((t) => (
<button key={t.label} className="relative flex min-w-[52px]
flex-col items-center gap-[3px] text-[11px] font-semibold
text-ink-300">
<t.icon className="size-6" strokeWidth={1.8} />{t.label}
{t.badge && <span className="absolute -top-1 right-0.5 grid
h-[17px] min-w-[17px] place-items-center rounded-full border-2
border-white bg-azure-600 px-1 text-[10px] font-bold
text-white">{t.badge}</span>}
</button>
))}
</nav><button className="-mt-1 flex flex-col items-center gap-0.5">
<span className="grid h-7 w-12 place-items-center rounded-[10px]
bg-azure-600 shadow-[0_3px_12px_rgba(29,111,242,0.45)]">
<Plus className="size-[18px] text-white" strokeWidth={2.5} />
</span>
<span className="text-[11px] font-semibold text-ink-300">Host</span>
</button><div className="absolute inset-0 overflow-hidden bg-[#F2F3F5]">
{/* MapLibre, the one grey product style, camera fitted to you + venue */}
<MapView styleUrl={GREY_STYLE}
className="absolute -top-[30px] left-0 h-[115%] w-full" />
</div><svg className="pointer-events-none absolute inset-0 z-[3] size-full"
viewBox="0 0 393 852">
<m.path
d="M66 508 Q112 476 162 472 Q216 466 252 424 Q286 384 298 344"
fill="none" stroke="#1D6FF2" strokeWidth={4}
strokeDasharray="8 7" strokeLinecap="round" className="opacity-85"
initial={{ pathLength: 0 }} animate={{ pathLength: 1 }} />
</svg><span className="absolute left-[58px] top-[500px] z-[4] size-4 rounded-full border-[3px] border-white bg-azure-500 shadow-[0_0_0_10px_rgba(29,111,242,0.14)]" />
{/* glow disc under the pin */}
<span className="absolute left-[272px] top-[280px] z-[4] size-[52px]
rounded-full bg-azure-600/15" />
<m.div className="absolute left-[280px] top-[286px] z-[5] size-9"
animate={{ y: [0, -3, 0] }} transition={{ repeat: Infinity, duration: 2 }}>
<span className="absolute inset-0 -rotate-45 rounded-[50%_50%_50%_0]
border-[2.5px] border-white bg-azure-500
shadow-[0_4px_10px_rgba(29,111,242,0.4)]" />
<Star className="absolute left-1/2 top-[44%] size-[15px] -translate-x-1/2
-translate-y-1/2 text-white" strokeWidth={2} />
</m.div><span className="absolute left-[104px] top-[428px] z-[5] inline-flex
h-[26px] items-center gap-[5px] rounded-lg bg-white px-2.5
text-[11.5px] font-bold text-ink-900
shadow-[0_0_0_2px_rgba(255,255,255,0.55),0_1px_5px_rgba(20,18,28,0.18)]">
<Navigation className="size-3 text-azure-600" strokeWidth={2.2} />
12 min walk · 0.6 mi
</span><button className="absolute left-3.5 top-[556px] z-[7] h-[94px] w-[124px]
overflow-hidden rounded-[14px]
shadow-[0_0_0_2.5px_#fff,0_10px_24px_rgba(20,18,28,0.28)]">
<Image src={clip.poster} alt="" fill className="object-cover" />
<span className="absolute inset-0 bg-gradient-to-b
from-ink-900/5 to-ink-900/35" />
<span className="absolute left-1/2 top-1/2 grid size-[34px]
-translate-x-1/2 -translate-y-1/2 place-items-center rounded-full
bg-black/40 ring-[1.5px] ring-white/40">
<Play className="ml-0.5 size-3.5 fill-white text-white" />
</span>
<span className="absolute bottom-1.5 left-[7px] rounded-[5px] bg-black/50
px-1.5 py-0.5 text-[9px] font-extrabold text-white">LIVE · 0:24</span>
</button>{/* one on each edge; dark frame swaps to bg-[#100F12]/45 + white glyph */}
<button className="absolute left-2.5 top-[404px] z-[8] grid size-9
place-items-center rounded-full bg-white/85 backdrop-blur-lg
shadow-[0_4px_14px_rgba(20,18,28,0.16)]">
<ChevronLeft className="size-[15px] text-ink-900" strokeWidth={2.2} />
</button>
<button className="absolute right-2.5 top-[404px] z-[8] grid size-9
place-items-center rounded-full bg-white/85 backdrop-blur-lg
shadow-[0_4px_14px_rgba(20,18,28,0.16)]">
<ChevronRight className="size-[15px] text-ink-900" strokeWidth={2.2} />
</button><div className="absolute inset-x-0 top-0 z-[8] h-[212px] rounded-b-3xl bg-white/90 backdrop-blur-2xl backdrop-saturate-150 shadow-[0_8px_30px_rgba(20,18,28,0.18)]" />
<span className="inline-flex h-[22px] items-center gap-[5px] rounded-full
bg-white pl-[7px] pr-[9px] text-[10.5px] font-bold tracking-[0.06em]
text-ink-900 shadow-[0_1px_5px_rgba(0,0,0,0.22)]">
<span className="relative size-1.5 rounded-full bg-siren
after:absolute after:-inset-[3px] after:animate-ping
after:rounded-full after:border-[1.5px] after:border-siren" />
LIVE
</span><span className="inline-flex h-[22px] items-center gap-1 rounded-[7px]
bg-[#F1F0F3] px-[9px] text-[10.5px] font-bold text-ink-500">
<Lock className="size-[11px]" strokeWidth={2.2} />
Private
</span><span className="ml-auto text-[11.5px] font-semibold text-ink-300"> Free entry </span>
<h1 className="mt-2 text-[27px] font-extrabold tracking-[-0.025em] text-ink-900">Warehouse Night</h1>
<p className="mt-1 text-[12.5px] font-semibold text-ink-900">
Started 8:15 PM
<span className="font-medium text-ink-300">
{" "}· live for 1h 26m · usually till 1 AM</span>
</p><p className="mt-1.5 text-[12.5px] leading-[1.5] text-ink-500"> Underground house set in the old print warehouse. Side door on Minna St — say Souham sent you. </p>
<div className="absolute inset-x-0 bottom-0 top-[664px] z-[9] rounded-t-3xl bg-white/95 backdrop-blur-2xl backdrop-saturate-150 shadow-[0_-8px_30px_rgba(20,18,28,0.25)]" />
<Button className="h-[46px] flex-1 rounded-[13px] bg-azure-600 text-[15px] font-bold text-white shadow-[0_4px_14px_rgba(29,111,242,0.30)]"> Request to Join </Button>
{/* one square, three glyphs: ChevronLeft · Share · MoreHorizontal */}
<button className="grid size-[46px] flex-none place-items-center
rounded-[13px] bg-[#F1F0F3]">
<ChevronLeft className="size-[17px] text-ink-900" strokeWidth={2.1} />
</button>
<button className="grid size-[46px] flex-none place-items-center
rounded-[13px] bg-[#F1F0F3]">
<Share className="size-[17px] text-ink-900" strokeWidth={1.9} />
</button>
<button className="grid size-[46px] flex-none place-items-center
rounded-[13px] bg-[#F1F0F3]">
<MoreHorizontal className="size-[17px] text-ink-900" />
</button><button className="flex w-full items-center gap-2 text-left">
<Image src={host.photo} alt=""
className="size-7 flex-none rounded-full ring-2 ring-white" />
<span className="whitespace-nowrap text-xs font-bold text-ink-900">
Souham Tekriwal</span>
<span className="truncate text-[10.5px] font-medium text-ink-300">
@st123 · replies in minutes</span>
<ChevronRight className="ml-auto size-[13px] flex-none text-ink-300"
strokeWidth={2} />
</button><div className="flex items-center gap-2">
<div className="flex">
{friends.map((f, i) => (
<Image key={f.id} src={f.photo} alt=""
className={cn("size-5 rounded-full ring-2 ring-white",
i > 0 && "-ml-[9px]")} />
))}
</div>
<p className="whitespace-nowrap text-[11px] text-ink-500">
<b className="font-bold text-ink-900">3 friends</b> going ·{" "}
<b className="font-bold text-ink-900">9 spots left</b>
</p>
</div><div className="absolute inset-0 bg-[#100F12]">
<video src={clip.src} poster={clip.poster}
autoPlay muted loop playsInline
className="absolute inset-0 size-full object-cover" />
</div><span className="pointer-events-none absolute inset-x-0 top-0 h-[360px] bg-gradient-to-b from-ink-900/45 via-ink-900/20 to-transparent" /> <span className="pointer-events-none absolute inset-x-0 bottom-0 h-[360px] bg-gradient-to-t from-ink-900/60 via-ink-900/20 to-transparent" />
<m.button whileTap={{ scale: 0.92 }}
className="absolute left-1/2 top-[296px] z-[6] grid size-16
-translate-x-1/2 place-items-center rounded-full bg-black/40
backdrop-blur-sm ring-2 ring-white/40">
<Play className="ml-1 size-[26px] fill-white text-white" />
</m.button><div className="absolute inset-x-0 top-[420px] z-[6] flex justify-center">
<span className="inline-flex h-[18px] items-center gap-1.5
rounded-[9px] bg-black/40 px-[9px] backdrop-blur-[5px]">
<span className="size-[7px] rounded-full bg-white" />
{[...Array(5)].map((_, i) => (
<span key={i} className="size-[5.5px] rounded-full bg-white/50" />
))}
</span>
</div><button className="absolute left-3.5 top-[556px] z-[7] h-[94px] w-[124px]
overflow-hidden rounded-[14px]
shadow-[0_0_0_2.5px_#fff,0_10px_24px_rgba(0,0,0,0.45)]">
<MapView styleUrl={GREY_STYLE}
className="absolute -left-[150px] -top-[160px]" />
<svg className="absolute inset-0" viewBox="0 0 124 94">
<polyline points="16,76 46,62 76,44 98,30" fill="none"
stroke="#1D6FF2" strokeWidth={2.5} strokeDasharray="5 4"
strokeLinecap="round" />
<circle cx={16} cy={76} r={7} fill="rgba(29,111,242,.18)" />
<circle cx={16} cy={76} r={4} fill="#1D6FF2"
stroke="#fff" strokeWidth={2} />
</svg>
<span className="absolute left-[90px] top-3.5 grid size-[17px] rotate-45
place-items-center rounded-[50%_50%_50%_4px] bg-azure-600
shadow-[0_2px_6px_rgba(20,18,28,0.4)]">
<Star className="size-[9px] -rotate-45 text-white" strokeWidth={2.4} />
</span>
<span className="absolute bottom-1.5 left-1/2 inline-flex h-[18px]
-translate-x-1/2 items-center gap-[3px] whitespace-nowrap
rounded-[9px] bg-white/95 px-2 text-[8.5px] font-extrabold
text-ink-900">
<Navigation className="size-[9px] text-azure-600" strokeWidth={2.2} />
12 min
</span>
</button><button className="relative size-11 shrink-0 rounded-full">
<Image src={me} alt="" className="size-full rounded-full object-cover" />
<span className="absolute bottom-0 right-0 size-3 rounded-full
bg-[#22C55E] ring-[2.5px] ring-[#F9F9FA]" />
</button><h1 className="text-[23px] font-extrabold tracking-[-0.02em] text-ink-900">Chat</h1>
<div className="flex gap-2">
<button className="grid size-[42px] place-items-center rounded-full
bg-[#EDECEF]">
<UserPlus className="size-5 text-ink-900" strokeWidth={1.9} />
</button>
<button className="grid size-[42px] place-items-center rounded-full
bg-[#EDECEF]">
<MoreHorizontal className="size-5 text-ink-900" />
</button>
</div><div className="flex h-11 items-center gap-[9px] rounded-[14px]
bg-[#ECEBEE] px-3.5 text-[15.5px] text-[#8E8C96]">
<Search className="size-[18px]" strokeWidth={2} />
<span className="flex-1">Search</span>
<SlidersHorizontal className="size-[18px]" />
</div><button className="w-16 shrink-0 text-center">
<span className="relative mx-auto block size-[54px] rounded-full p-[1.5px]
[background:conic-gradient(from_128deg,#E2E1E6_0_96%,transparent_96%_100%)]">
<span className="grid size-full place-items-center rounded-full
border-2 border-[#F9F9FA] bg-[#EEECFA] text-2xl">🤖</span>
</span>
<span className="mt-1.5 block text-[11.5px] font-semibold
text-ink-900">My AI</span>
</button><button className="w-16 shrink-0 text-center">
<span className="relative mx-auto block size-[54px] rounded-full p-[1.5px]
[background:conic-gradient(from_128deg,var(--ring)_0_96%,transparent_96%_100%)]">
<Image src={photo} alt="" className="size-full rounded-full
border-2 border-[#F9F9FA] object-cover" />
<span className="absolute bottom-px right-px size-[13px] rounded-full
bg-[#22C55E] ring-[2.5px] ring-white" />
</span>
<span className="mt-1.5 block truncate text-[11.5px] font-semibold
text-ink-900">{name}</span>
</button><div className="relative flex items-center gap-[11px] py-1.5
after:absolute after:bottom-0 after:left-[55px] after:right-0
after:h-px after:bg-[#EFEEF2]">
<Image src={photo} alt="" className="size-11 shrink-0 rounded-full
object-cover" />
<div className="min-w-0 flex-1">
<p className="text-[15.5px] font-bold tracking-[-0.01em]
text-ink-900">{name}</p>
<StatusLine />
</div>
<MetaRail />
</div><p className="mt-0.5 flex items-center gap-[5px] text-[12.5px]
font-semibold text-ink-300">
{/* COLOR = type: violet snap · azure chat · siren needs-you */}
<Square className="size-[13px] text-[#7C3AED]" strokeWidth={2.4} />
<span className="text-[#7C3AED]">New Snap</span>
<span>· just now</span>
</p><button aria-label="Reply with a moment">
<Camera className="size-[21px] text-ink-900" strokeWidth={1.8} />
</button><BellOff className="size-5 text-ink-900" strokeWidth={1.8} /><span className="text-[17px] leading-none">😊</span>
<span className="size-[9px] rounded-full bg-azure-500" />
<div className="flex items-center gap-[11px] py-1.5">
<div className="relative grid size-11 shrink-0 place-items-center
rounded-full bg-[#EEECFA] text-[22px]">
🤖
<span className="absolute -right-px -top-px grid size-4
place-items-center rounded-full bg-[#7C3AED] text-[9px]
text-white">✦</span>
</div>
<div className="min-w-0 flex-1">
<p className="text-[15.5px] font-bold text-ink-900">What2Do AI</p>
<p className="mt-0.5 flex items-center gap-[5px] text-[12.5px]
font-semibold text-ink-300">
<ArrowRight className="size-[13px] text-azure-600"
strokeWidth={2.4} />
<span className="text-azure-600">New suggestion!</span>
<span>· 3h</span>
</p>
</div>
</div><nav className="absolute inset-x-0 bottom-0 flex h-[86px] items-start
justify-around bg-white px-2 pt-[11px]
before:pointer-events-none before:absolute before:inset-x-0
before:-top-8 before:h-8 before:bg-gradient-to-b
before:from-transparent before:to-white">
<Tab icon={Home} label="Home" />
<Tab icon={MessageCircle} label="Chats" active />
<HostButton />
<Tab icon={Search} label="Explore" />
<Tab avatar={me} label="Profile" />
</nav>
{/* Tab: */}
<button className="flex min-w-[52px] flex-col items-center gap-[3px]
text-[11px] font-semibold text-ink-300
data-[active=true]:text-azure-600">
<Icon className="size-6" strokeWidth={1.8} />{label}
</button><button className="-mt-[3px] flex flex-col items-center gap-0.5">
<span className="grid h-7 w-12 place-items-center rounded-[10px]
bg-azure-600 shadow-[0_3px_12px_rgba(29,111,242,0.45)]">
<Plus className="size-[18px] text-white" strokeWidth={2.5} />
</span>
<span className="mt-0.5 text-[11px] font-semibold
text-azure-600">Host</span>
</button><h1 className="text-[26px] font-extrabold tracking-[-0.4px] text-ink-900">New message</h1>
<button className="grid size-10 place-items-center rounded-full bg-[#F2F1F4]"><X className="size-[15px] text-ink-900" strokeWidth={2.4} /></button><div className="flex h-[46px] items-center gap-[9px] rounded-[23px] border-[1.5px] border-azure-600 bg-[#F4F6F9] px-[15px]">
<Search className="size-4 text-azure-600" strokeWidth={2.2} />
<input autoFocus placeholder="Search people" className="min-w-0 flex-1 bg-transparent text-[15px] font-medium placeholder:text-ink-300" />
</div><p className="text-[11.5px] font-bold tracking-[0.08em] text-ink-300">RECENT</p>
<button className="flex h-[58px] w-full items-center gap-3 text-left">
<Image src={u.avatar} className="size-10 rounded-full" />
<span className="min-w-0 flex-1">
<span className="block text-[15px] font-bold text-ink-900">{u.name}</span>
<span className="block text-[12px] font-medium text-ink-300">@{u.handle}</span>
</span>
</button><span className="relative block size-[62px] rounded-full bg-[linear-gradient(135deg,#1D6FF2,#3D8BFF)] p-[2.5px]">
<Image src={r.cover} fill className="rounded-full border-[2.5px] border-white object-cover" />
</span><button className="grid size-[62px] place-items-center rounded-full border-[1.5px] border-dashed border-[#C9C7CF] text-[22px] text-ink-300">+</button>
<SystemKeyboard />
<button><ChevronLeft className="size-[18px] text-ink-900" strokeWidth={2.4} /></button><h1 className="text-[25px] font-extrabold tracking-[-0.3px] text-ink-900">Notifications</h1>
<button className="ml-auto text-[12.5px] font-bold text-azure-600">Mark all read</button>
<p className="text-[11.5px] font-bold tracking-[0.08em] text-ink-300">NEW</p>
<div className="flex h-16 items-center gap-3">
<Image src={u.avatar} className="size-11 rounded-full" />
<p className="min-w-0 flex-1 text-[13.5px] leading-[1.45] text-ink-900"><b>{u.name}</b> sent you a friend request <span className="text-ink-300">· {t}</span></p>
{accept}
</div><button className="h-8 flex-none rounded-2xl bg-azure-600 px-3.5 text-[12.5px] font-extrabold lowercase text-white">accept</button>
<div className="flex h-16 items-center gap-3">
<span className="relative flex-none"><Image src={ev.frame} className="size-11 rounded-xl" /><LiveDot /></span>
<p className="min-w-0 flex-1 text-[13.5px] leading-[1.45] text-ink-900"><b>{f.name}</b> invited you to <b>{ev.title}</b> <span className="font-extrabold text-[#ED2F4E]">· LIVE now</span></p>
{stepIn}
</div><button className="h-8 flex-none rounded-2xl bg-azure-600 px-3.5 text-[12.5px] font-extrabold lowercase text-white">step in ›</button>
<button className="flex h-16 w-full items-center gap-3 text-left">
<Image src={f.avatar} className="size-11 rounded-full" />
<p className="min-w-0 flex-1 text-[13.5px] text-ink-900"><b>{f.name}</b> is out now · {f.area} <span className="text-ink-300">· {t}</span></p>
<ChevronRight className="size-[15px] text-[#B7B5BE]" />
</button><div className="flex h-16 items-center gap-3">
{avatarOrInitials}
<span className="min-w-0 flex-1">
<span className="block text-[14.5px] font-bold text-ink-900">{u.name}</span>
<span className="block text-[12px] font-medium text-ink-300">{u.reason}</span>
</span>
{add}
</div><button className="h-8 flex-none rounded-2xl bg-azure-600 px-3.5 text-[12.5px] font-extrabold lowercase text-white">add</button>
<span className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
<header className="absolute inset-x-0 top-[54px] z-[5] flex h-11
items-center justify-between px-3.5">
<Button variant="ghost" size="icon" className="size-9 rounded-full bg-[#F4F4F6]">
<UserPlus className="size-[19px] text-ink-900" strokeWidth={2} />
</Button>
<span className="text-[15px] font-extrabold tracking-[-0.1px]
text-ink-900">@arad</span>
<Button variant="ghost" size="icon" className="size-9 rounded-full bg-[#F4F4F6]">
<Menu className="size-[19px] text-ink-900" strokeWidth={2} />
</Button>
</header><div className="absolute inset-x-0 top-[98px] z-[3] h-44 overflow-hidden">
<Image src={me.cover} alt="" fill className="object-cover" />
<span className="absolute inset-0
bg-[linear-gradient(180deg,rgba(10,10,14,0.12)_0%,rgba(10,10,14,0)_30%,rgba(10,10,14,0.68)_100%)]" />
</div><span className="absolute right-3.5 top-3 inline-flex h-[22px] items-center gap-[5px] rounded-[11px] bg-white/90 px-[9px] text-[10px] font-extrabold text-ink-900"> <i className="size-[7px] rounded-full bg-[#22C55E] not-italic" /> Out now </span>
<div className="absolute inset-x-4 bottom-[11px]">
<h1 className="text-[22px] font-extrabold tracking-[-0.3px]
text-white">Arad Tabrizi</h1>
<p className="mt-0.5 text-xs font-semibold text-white/85">@arad · San Francisco</p>
<p className="mt-[3px] text-[11.5px] font-medium text-white/75">
live music · night markets · golden hour walks 🎧</p>
</div><div className="absolute inset-x-[38px] top-[288px] z-[4] flex items-center
justify-between">
{[["23","Friends"],["12","Hosted"],["48","Attended"]].map(([n, label], i) => (
<Fragment key={label}>
{i > 0 && <i className="h-[22px] w-px bg-[#ECEBEF]" />}
<button className="flex flex-1 flex-col items-center gap-px">
<b className="text-[17px] font-extrabold tracking-[-0.2px]
text-ink-900">{n}</b>
<span className="text-[11px] font-medium text-ink-300">{label}</span>
</button>
</Fragment>
))}
</div><div className="absolute inset-x-4 top-[334px] z-[4] flex gap-2">
<Button variant="secondary" className="h-11 flex-1 rounded-[10px]
bg-[#F1F1F4] text-[13px] font-bold text-ink-900">Edit profile</Button>
<Button variant="secondary" className="h-11 flex-1 rounded-[10px]
bg-[#F1F1F4] text-[13px] font-bold text-ink-900">Share profile</Button>
<Button variant="secondary" size="icon" className="h-11 w-11 rounded-[10px]
bg-[#F1F1F4]"><Share className="size-[17px] text-ink-900" strokeWidth={2} /></Button>
</div><m.button whileTap={{ scale: 0.98 }}
className="absolute inset-x-4 top-[392px] z-[4] h-[78px] overflow-hidden
rounded-2xl shadow-[0_6px_18px_rgba(20,18,28,0.16)]">
<Image src={next.cover} alt="" fill className="object-cover" />
<span className="absolute inset-0 bg-gradient-to-r
from-[#0A0A0E]/80 via-[#0A0A0E]/50 to-[#0A0A0E]/10" />
</m.button><div className="absolute left-[13px] right-24 top-3.5 text-left">
<p className="text-[10px] font-extrabold tracking-[0.08em]
text-[#9FC5FF]">NEXT MOMENT</p>
<p className="mt-[3px] truncate text-[14.5px] font-extrabold
text-white">Rooftop Sunset Social</p>
<p className="mt-0.5 text-[11px] font-semibold
text-white/80">Sat · 7:00 PM · Mission District</p>
</div><span className="absolute right-2.5 top-1/2 inline-flex h-7 -translate-y-1/2 items-center rounded-[14px] bg-azure-600 px-[11px] text-[11px] font-extrabold text-white shadow-[0_3px_10px_rgba(29,111,242,0.5)]">Going ✓</span>
<div className="absolute inset-x-0 top-[482px] z-[4] flex gap-4 px-4">
{highlights.map(h => (
<button key={h.id} className="flex flex-col items-center gap-[5px]">
<span className="size-[62px] rounded-full p-[2.5px]
bg-gradient-to-br from-azure-500 to-azure-600">
<Image src={h.cover} alt="" width={57} height={57}
className="size-full rounded-full border-[2.5px] border-white
object-cover" />
</span>
<span className="text-[10.5px] font-semibold
text-[#4A4954]">{h.label}</span>
</button>
))}
</div><button className="flex flex-col items-center gap-[5px]">
<span className="grid size-[62px] place-items-center rounded-full
border-[1.8px] border-dashed border-[#C9C8D1]">
<Plus className="size-5 text-ink-300" strokeWidth={2} />
</span>
<span className="text-[10.5px] font-semibold text-ink-300">New</span>
</button><div className="absolute inset-x-0 top-[570px] z-[4] flex border-b
border-[#ECEBEF]">
{[Grid3x3, Calendar, Heart].map((Icon, i) => (
<button key={i} className="relative grid h-11 flex-1 place-items-center">
<Icon className={cn("size-[23px] text-[#8E8E93]",
i === 0 && "text-ink-900")} strokeWidth={2} />
{i === 0 && <span className="absolute -bottom-px left-1/2 h-[2.5px]
w-11 -translate-x-1/2 rounded-sm bg-ink-900" />}
</button>
))}
</div><div className="absolute inset-x-0 top-[618px] z-[3] flex flex-wrap gap-[3px]">
{moments.map(mo => (
<button key={mo.id}
className="relative aspect-[1.04] w-[calc((100%-6px)/3)] overflow-hidden">
<Image src={mo.cover} alt="" fill className="object-cover" />
</button>
))}
</div><span className="absolute bottom-1.5 left-1.5 inline-flex h-[18px] items-center gap-[3px] rounded-[9px] bg-[#100F12]/60 px-1.5 text-[9.5px] font-bold text-white backdrop-blur-sm">👥 12</span>
<nav className="absolute inset-x-0 bottom-0 z-[12] flex h-[86px] items-start
justify-around bg-white px-2 pt-[11px]
before:absolute before:inset-x-0 before:-top-8 before:h-8
before:bg-gradient-to-b before:from-white/0 before:to-white">
{tabs.map(t => (
<button key={t.label} className={cn("relative flex min-w-[52px] flex-col
items-center gap-[3px] text-[11px] font-semibold text-ink-300",
t.active && "text-azure-600")}>
{t.label === "Profile"
? <Image src={me.photo} alt="" width={25} height={25}
className="rounded-full ring-2 ring-azure-600" />
: <t.icon className="size-6" strokeWidth={1.8} />}
{t.label}
{t.badge && <span className="absolute -top-1 right-0.5 grid h-[17px]
min-w-[17px] place-items-center rounded-full border-2 border-white
bg-azure-600 px-1 text-[10px] font-bold text-white">2</span>}
</button>
))}
</nav><span className="-mt-[3px] flex flex-col items-center gap-0.5">
<span className="grid h-7 w-12 place-items-center rounded-[10px]
bg-azure-600 shadow-[0_3px_12px_rgba(29,111,242,0.45)]">
<Plus className="size-[18px] text-white" strokeWidth={2.5} />
</span>
<span className="mt-0.5 text-[11px] font-semibold text-ink-300">Host</span>
</span><button onClick={openIdentitySheet} className="inline-flex items-center gap-1 text-[15px] font-extrabold tracking-[-0.1px] text-ink-900">
@arad{identities.length > 1 && <b className="text-[9px] text-ink-500">▾</b>}
</button><div onClick={close} className="absolute inset-0 bg-[#100F12]/[0.44]" /><m.div initial={{ y: '100%' }} animate={{ y: 0 }} className="absolute inset-x-0 bottom-0 rounded-t-[22px] bg-white px-5 pb-[30px] pt-2.5 shadow-[0_-12px_34px_rgba(20,18,28,0.18)]">
<span className="mx-auto block h-1 w-9 rounded-full bg-[#E3E2E7]" />
<p className="mt-3.5 text-center text-[15px] font-extrabold text-ink-900">Switch identity</p>
{rows}
<p className="mt-2.5 text-center text-[11px] font-medium text-ink-300">Same account — switch anytime.</p>
</m.div><button className="flex w-full items-center gap-3 py-3">
<Image src={me.avatar} className="size-10 rounded-full object-cover" />
<span className="min-w-0 flex-1 text-left">
<span className="block text-[14.5px] font-extrabold text-ink-900">Arad</span>
<span className="block text-[12px] font-medium text-ink-500">@arad · personal</span>
</span>
<Check active />
</button><button className="flex w-full items-center gap-3 py-3">
<span className="grid size-10 flex-none place-items-center rounded-[13px] bg-[linear-gradient(135deg,#1D6FF2,#3D8BFF)] text-[16px] font-extrabold text-white">W</span>
<span className="min-w-0 flex-1 text-left">
<span className="block text-[14.5px] font-extrabold text-ink-900">Warehouse SF</span>
<span className="block text-[12px] font-medium text-ink-500">organization · 2 teammates</span>
</span>
<Check />
</button><button className="flex w-full items-center gap-3 py-3"> <span className="grid size-10 flex-none place-items-center rounded-[13px] border-[1.5px] border-dashed border-[#D8D6DC] text-[19px] font-semibold text-ink-300">+</span> <span className="flex-1 text-left text-[13.5px] font-bold text-ink-500">Create an organization</span> </button>
1. "Johns Hopkins Univrsity" — typo ships in the College value (no spellcheck/suggest). 2. Date of birth "Apr 22, 2026" — future DOB accepted; picker needs a max-date clamp (13+ policy). 3. Black CTAs — off-system: primary actions elsewhere are Azure 500 capsules. 4. Two stacked primary buttons (Send code + Save) compete; verification should collapse after verify.
<div className="pointer-events-none absolute inset-x-0 top-0 z-20 flex h-14
items-end justify-between px-[34px] pb-1.5 text-white">
<span className="text-base font-[650] tracking-[0.02em]">9:41</span>
<span className="flex items-end gap-1.5">
<Signal className="size-4" /><Wifi className="size-4" /><BatteryFull className="size-5" />
</span>
</div><div className="absolute left-1/2 top-3 z-30 h-[34px] w-[118px] -translate-x-1/2 rounded-[18px] bg-black shadow-[inset_0_0_0_1px_rgba(255,255,255,0.03)]" />
<div className="absolute inset-x-2.5 top-[52px] bottom-[218px] overflow-hidden
rounded-[32px]
bg-[linear-gradient(200deg,#1B2440_0%,#121A2E_45%,#241A16_100%)]">
{/* live camera feed */}
</div><div className="absolute left-[60px] top-[120px] size-[60px] rounded-full bg-[#4E96FF] opacity-45 blur-[26px]" /> <div className="absolute right-[70px] top-[210px] size-11 rounded-full bg-[#EF4A9B] opacity-40 blur-[22px]" /> <div className="absolute left-[150px] top-[330px] size-[70px] rounded-full bg-[#F59E0B] opacity-30 blur-[30px]" />
<m.button whileTap={{ scale: 0.92 }}
className="absolute left-3.5 top-6 grid size-[46px] place-items-center
rounded-full border border-white/[0.18] bg-ink-900/50 backdrop-blur-xl">
<X className="size-[21px] text-white" strokeWidth={1.8} />
</m.button><m.button whileTap={{ scale: 0.92 }}
className="absolute right-3.5 top-6 grid size-[46px] place-items-center
rounded-full border border-white/[0.18] bg-ink-900/50 backdrop-blur-xl">
<Zap className="size-[21px] text-white" strokeWidth={1.8} />
</m.button><div className="absolute inset-x-0 bottom-[232px] flex justify-center gap-[9px]">
<span className="inline-flex h-6 items-center rounded-lg bg-white px-3
text-[10px] font-bold uppercase tracking-[0.05em] text-ink-900">Moment</span>
<span className="inline-flex h-6 items-center rounded-lg bg-white/15 px-3
text-[10px] font-bold uppercase tracking-[0.05em] text-white/75">Recap</span>
</div><button className="absolute left-[34px] top-[15px] grid size-[46px]
place-items-center rounded-full border border-white/[0.18]
bg-ink-900/50 backdrop-blur-xl">
<Image className="size-[21px] text-white" strokeWidth={1.8} />
</button><button className="absolute left-24 top-[15px] grid size-[46px]
place-items-center rounded-full border border-white/[0.18]
bg-ink-900/50 backdrop-blur-xl">
<Sparkles className="size-[21px] text-[#7FB5FF]" strokeWidth={1.8} />
</button><m.button whileTap={{ scale: 0.9 }} data-recording={recording}
className="absolute left-1/2 top-0 size-[76px] -translate-x-1/2 rounded-full
border-[5px] border-white bg-white/15 shadow-[0_0_0_2px_rgba(0,0,0,0.2)]
data-[recording=true]:bg-azure-600
data-[recording=true]:shadow-[0_0_28px_rgba(29,111,242,0.6)]" /><button className="absolute right-[34px] top-[15px] grid size-[46px]
place-items-center rounded-full border border-white/[0.18]
bg-ink-900/50 backdrop-blur-xl">
<SwitchCamera className="size-[21px] text-white" strokeWidth={1.8} />
</button><p className="absolute inset-x-0 bottom-[98px] text-center text-xs text-white/55"> Drop a moment — it goes live instantly </p>
<div className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-white/40" />
<div className="absolute inset-0 bg-[#100F12]
bg-[url('/footage/party-tall.jpg')] bg-cover bg-center" /><div className="absolute inset-0 bg-[linear-gradient(180deg,rgba(10,10,14,0.55)_0%,rgba(10,10,14,0.18)_42%,rgba(10,10,14,0.8)_100%)]" />
<div className="absolute inset-x-0 top-0 z-20 flex h-14 items-end justify-between px-[34px] pb-1.5 text-white"> <span className="text-[16px] font-[650] tracking-[0.02em]">9:41</span> <StatusGlyphs /> </div>
<div className="absolute left-1/2 top-3 h-[34px] w-[118px] -translate-x-1/2 rounded-[18px] bg-black" />
<h1 className="font-bricolage text-[46px] font-extrabold tracking-[-0.03em] text-white"> What<span className="text-[#5AA0FF]">2</span>Do </h1>
<div className="mt-[18px] inline-flex h-[26px] items-center gap-[7px]
rounded-[13px] bg-white/[0.14] px-3 backdrop-blur-[8px]">
<LiveDot />
<span className="text-[11.5px] font-bold text-white/[0.92]">
47 people are out in SF right now
</span>
</div><span className="size-[7px] rounded-full bg-[#ED2F4E]" />
<button className="absolute left-1/2 w-[220px] -translate-x-1/2 bottom-[84px] flex h-[52px] items-center justify-center rounded-full bg-azure-500 text-[15.5px] font-extrabold text-white "> get started → </button>
<p className="absolute inset-x-0 bottom-[46px] text-center text-[12.5px] font-medium text-white/60"> Already have an account? <b className="font-bold text-white">Log in</b> </p>
<div className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-white/40" />
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-[#F4F4F6]">
<ChevronLeft className="size-4 text-ink-900" strokeWidth={2.2} />
</button><h1 className="absolute top-[152px] inset-x-6 text-center text-[26px] font-extrabold tracking-[-0.4px] text-ink-900">Welcome back</h1>
<div className="absolute top-[232px] inset-x-6 flex h-14 items-center gap-2.5 rounded-[14px] border-[1.5px] border-[#E8E6E1] bg-white px-4">
<span className="text-[18px]">🇺🇸</span><span className="text-[15px] font-bold text-ink-900">+1</span>
<span className="h-[22px] w-px bg-[#E8E6E1]" />{caret}{input}
</div><span className="h-[22px] w-[2px] rounded-[1px] bg-azure-600 motion-safe:animate-pulse" />
<input className="w-full bg-transparent text-[17px] font-medium tracking-[0.02em] text-ink-900 placeholder:text-ink-300" placeholder="(201) 555-0123" type="tel" />
<p className="absolute top-[306px] inset-x-9 text-center text-[12px] font-medium leading-[1.55] text-ink-300">We'll text you a code to log you back in.</p>
<button disabled={!valid} className="absolute top-[376px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white disabled:bg-[#A9CCFF]">log in →</button><p className="absolute top-[446px] inset-x-0 text-center text-[12.5px] font-medium text-ink-500">
Prefer a username? <button onClick={() => setMode('name')} className="font-bold text-azure-600">Sign in with @name</button>
</p><div className="absolute inset-x-0 bottom-0 bg-[#D1D4DA] pb-8 pt-1.5">{suggestion}{rows}</div><button className="w-full py-1.5 text-center text-[11px] text-ink-500">mobile<br /><b className="text-[13px] text-ink-900">(443) 285-9002</b></button>
<button className="flex h-11 flex-1 flex-col items-center justify-center rounded-md bg-white text-[23px] text-ink-900 shadow-[0_1.5px_0_rgba(20,18,28,0.3)]">5<span className="text-[9px] font-bold tracking-[0.12em]">JKL</span></button>
<button className="flex h-11 flex-1 items-center justify-center text-[19px] text-[#3A3945]">⌫</button>
<span className="absolute inset-x-0 top-0 h-[426px] rounded-b-[28px] bg-[linear-gradient(180deg,#1D6FF2_0%,#3D8BFF_100%)]" />
<div className="absolute top-[216px] inset-x-6 flex h-14 items-center gap-0.5 rounded-[14px] bg-white px-4 shadow-[0_10px_26px_rgba(13,47,102,0.22)]"> <span className="text-[17px] font-bold text-ink-300">@</span> <input className="min-w-0 flex-1 bg-transparent text-[17px] font-bold text-ink-900" /> </div>
<div className="absolute top-[288px] inset-x-6 flex h-14 items-center rounded-[14px] bg-white px-4 shadow-[0_10px_26px_rgba(13,47,102,0.22)]"> <input type="password" className="min-w-0 flex-1 bg-transparent text-[17px] font-bold tracking-[0.1em] text-ink-900" /> <button className="ml-auto text-[12.5px] font-semibold lowercase text-ink-300">show</button> </div>
<button className="absolute top-[360px] inset-x-0 text-center text-[12.5px] font-bold text-white/90">Forgot password?</button>
<button className="absolute top-[460px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white">log in →</button>
<p className="absolute top-[530px] inset-x-0 text-center text-[12.5px] font-medium text-ink-500">
Use your number? <button onClick={() => setMode('phone')} className="font-bold text-azure-600">Sign in with phone</button>
</p><button className="absolute left-[14px] top-[60px] z-[5] grid h-9 w-9 place-items-center rounded-full bg-[#F4F4F6]"> <ChevronLeft className="h-4 w-4 stroke-[2.2] text-ink-900" /> </button>
<h1 className="absolute inset-x-6 top-[152px] text-center text-[26px] font-extrabold tracking-[-0.4px] text-ink-900"> What's your number? </h1>
<div className="absolute inset-x-6 top-[232px] flex h-14 items-center gap-2.5 rounded-[14px] border-[1.5px] border-hairline bg-white px-4">
<span className="text-lg">🇺🇸</span>
<span className="text-[15px] font-bold text-ink-900">+1</span>
<span className="h-[22px] w-px bg-hairline" />
{/* InputCaret + PlaceholderText */}
</div><span className="h-[22px] w-[2px] rounded-[1px] bg-azure-600 motion-safe:animate-blink" />
<span className="text-[17px] font-medium tracking-[0.02em] text-ink-300"> (201) 555-0123 </span>
<p className="absolute inset-x-9 top-[306px] text-center text-xs font-medium leading-[1.55] text-ink-300">
By signing up you agree to our{' '}
<b className="font-bold text-azure-600">Terms</b> and{' '}
<b className="font-bold text-azure-600">Privacy Policy</b>.
</p><button disabled className="absolute inset-x-6 top-[376px] flex h-[52px] items-center justify-center rounded-full bg-azure-500 text-[15.5px] font-extrabold text-white shadow-[0_8px_22px_rgba(29,111,242,.4)] disabled:bg-azure-disabled disabled:shadow-none" > next → </button>
<div className="absolute inset-x-0 bottom-0 z-30 h-[292px] bg-[#D1D4DA] px-1.5">
{/* AutofillSuggestion + 4 × key rows */}
</div><div className="pb-1.5 pt-[7px] text-center text-[11px] font-normal leading-[1.35] text-ink-500"> mobile <br /> <b className="text-sm font-semibold text-ink-900">(443) 285-9002</b> </div>
<div className="mb-[7px] flex gap-1.5">
<button className="flex h-11 flex-1 flex-col items-center justify-center rounded-md bg-white text-[23px] font-normal leading-none text-ink-900 shadow-[0_1.5px_0_rgba(20,18,28,.3)]">
2
<i className="mt-px h-[9px] text-[9px] font-bold not-italic tracking-[.12em]">ABC</i>
</button>
{/* ×10 total: 1 (no letters), 2 ABC … 9 WXYZ, then 0 */}
</div><button className="flex h-11 flex-1 items-center justify-center rounded-md bg-transparent text-[19px] text-[#3A3945] shadow-none">
⌫
</button>
{/* left twin: identical shell, empty content */}<p className="absolute top-[446px] inset-x-0 text-center text-[12.5px] font-medium text-ink-500">
Prefer a username? <button onClick={() => go('/signup/handle')} className="font-bold text-azure-600">Sign up with @name</button>
</p><div className="absolute inset-x-2.5 top-[60px] z-20 flex items-center
gap-2.5 rounded-[18px] bg-white px-3.5 py-[11px]
shadow-[0_6px_22px_rgba(20,18,28,0.16),0_0_0_1px_rgba(20,18,28,0.04)]">
<span className="grid size-[34px] flex-none place-items-center
rounded-[9px] bg-azure-100">
<MessageCircle className="size-[17px] text-azure-600" strokeWidth={2}/>
</span>
<span className="min-w-0 flex-1">
<span className="block text-[12.5px] font-extrabold text-ink-900">What2Do</span>
<span className="block text-[12px] font-medium text-ink-500">
Your verification code is 224-466</span>
</span>
<span className="flex-none text-[11px] font-medium text-ink-300">now</span>
</div><h1 className="absolute inset-x-8 top-[174px] text-center text-[26px] font-extrabold leading-[1.25] tracking-[-0.4px] text-ink-900"> Enter the code<br/>we texted you</h1>
<div className="absolute inset-x-0 top-[296px] flex justify-center gap-2">
{digits.map((d, i) =>
<span key={i} className="grid h-14 w-[46px] place-items-center
rounded-[13px] border-[1.5px] border-[#E8E6E1] bg-white
text-[22px] font-extrabold text-ink-900">{d}</span>)}
</div><span className="grid h-14 w-[46px] place-items-center rounded-[13px]
border-[1.5px] border-azure-600 bg-white
shadow-[0_0_0_3px_rgba(29,111,242,0.14)]">
<span className="h-[22px] w-[2px] animate-caret rounded-[1px]
bg-azure-600" />
</span><p className="absolute inset-x-0 top-[378px] text-center text-[13px] font-medium text-ink-500"> Didn't get it? <b className="font-bold text-azure-600">Resend</b> </p>
<button className="absolute inset-x-0 top-[404px] text-center text-[12.5px] font-medium text-ink-300">Use email instead</button>
<button disabled={code.length < 6} className="absolute inset-x-6
top-[448px] inline-flex h-[52px] items-center justify-center
rounded-full bg-azure-500 text-[15.5px] font-extrabold text-white
disabled:bg-[#A9CCFF] disabled:shadow-none">next →</button><div className="absolute inset-x-0 bottom-0 z-30 h-[292px]
bg-[#D1D4DA] px-1.5">
<QuickTypeSuggestion />
{rows.map((r) => <KeyRow key={r.id} keys={r.keys} />)}
</div><button className="w-full pb-1.5 pt-[7px] text-center text-[11px] leading-[1.35] text-ink-500"> From Messages<br/> <b className="text-[14px] font-semibold text-ink-900">224466</b> </button>
<div className="mb-[7px] flex gap-1.5">
<button className="flex h-11 flex-1 flex-col items-center
justify-center rounded-md bg-white leading-none
text-[23px] font-normal text-ink-900
shadow-[0_1.5px_0_rgba(20,18,28,0.3)]">
2
<i className="mt-px h-[9px] text-[9px] font-bold not-italic
tracking-[0.12em]">ABC</i>
</button>
</div><button className="flex h-11 flex-1 items-center justify-center rounded-md bg-transparent text-[19px] text-[#3A3945] shadow-none">⌫</button>
<span className="absolute inset-x-0 top-0 h-[426px] rounded-b-[28px] bg-[linear-gradient(180deg,#1D6FF2_0%,#3D8BFF_100%)]" />
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-white/[0.16]">
<ChevronLeft className="size-4 text-white" strokeWidth={2.2} />
</button><h1 className="absolute top-[124px] inset-x-6 text-center text-[26px] font-extrabold tracking-[-0.4px] text-white">Claim your @name</h1>
<div className="absolute top-[216px] inset-x-6 flex h-14 items-center gap-0.5 rounded-[14px] bg-white px-4 shadow-[0_10px_26px_rgba(13,47,102,0.22)]">
<span className="text-[17px] font-bold text-ink-300">@</span>
<input className="min-w-0 flex-1 bg-transparent text-[17px] font-bold text-ink-900" value={handle} />
{availability}
</div><span className="ml-auto text-[11.5px] font-bold text-azure-600">✓ available</span>
<div className="absolute top-[288px] inset-x-6 flex h-14 items-center rounded-[14px] bg-white px-4 shadow-[0_10px_26px_rgba(13,47,102,0.22)]">
<input type={shown ? 'text' : 'password'} className="min-w-0 flex-1 bg-transparent text-[17px] font-bold tracking-[0.1em] text-ink-900" />
{showToggle}
</div><button onClick={() => setShown(v => !v)} className="ml-auto text-[12.5px] font-semibold lowercase text-ink-300">{shown ? 'hide' : 'show'}</button><p className="absolute top-[466px] inset-x-9 text-center text-[12px] font-medium leading-[1.55] text-ink-300"> 8+ characters — your @name and password log you in on any device.<br />Add a backup email anytime in Settings. </p>
<button disabled={!valid} className="absolute bottom-[66px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white disabled:bg-[#A9CCFF]">next →</button><span className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-[#F4F4F6]">
<ChevronLeft className="size-4 text-ink-900" strokeWidth={2.2} />
</button><h1 className="absolute top-[152px] inset-x-6 text-center text-[26px] font-extrabold tracking-[-0.4px] text-ink-900">Add a photo</h1>
<button className="absolute left-1/2 top-[308px] grid size-[132px] -translate-x-1/2 place-items-center rounded-[60px] bg-[#F1F1F4] shadow-[0_0_0_1.5px_#E8E6E1]">
<Camera className="size-[44px] text-ink-300" strokeWidth={1.8} />
</button><button className="absolute left-1/2 top-[308px] size-[132px] -translate-x-1/2 overflow-hidden rounded-[60px] shadow-[0_0_0_1.5px_#E8E6E1,0_12px_30px_rgba(20,18,28,0.12)]">
<Image src={draft} alt="" fill className="object-cover" />
</button><button className="absolute top-[482px] inset-x-0 text-center text-[13px] font-semibold text-ink-300">Skip for now</button>
<button onClick={() => setAccountMode('org')} className="absolute bottom-[128px] left-1/2 h-[46px] w-[220px] -translate-x-1/2 rounded-full border-[1.5px] border-azure-500 bg-white text-[14px] font-extrabold lowercase text-azure-500">venue or organization →</button><button disabled={!draft} className="absolute bottom-[66px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white disabled:bg-[#A9CCFF]">next →</button><span className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-[#F4F4F6]">
<ChevronLeft className="size-4 text-ink-900" strokeWidth={2.2} />
</button><h1 className="absolute top-[152px] inset-x-6 text-center text-[26px] font-extrabold tracking-[-0.4px] text-ink-900">Set up your organization</h1>
<button className="absolute left-1/2 top-[308px] grid size-[120px] -translate-x-1/2 place-items-center rounded-[38px] bg-[linear-gradient(135deg,#1D6FF2,#3D8BFF)] text-[42px] font-extrabold text-white shadow-[0_12px_30px_rgba(29,111,242,0.28)]">
{logo ? <Image src={logo} alt="" fill className="rounded-[38px] object-cover" /> : initial}
</button><input className="absolute top-[468px] inset-x-6 flex h-[52px] items-center rounded-[14px] border-[1.5px] border-[#E8E6E1] bg-white px-4 text-[15.5px] font-bold text-ink-900" placeholder="Organization name" defaultValue="Warehouse SF" />
<p className="absolute top-[538px] inset-x-0 text-center text-[11.5px] font-medium text-ink-300">Photos and location come later.</p>
<button className="absolute bottom-[132px] inset-x-0 text-center text-[12.5px] font-semibold text-ink-300">Skip for now</button>
<button className="absolute bottom-[66px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white">next →</button>
<span className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
<button className="absolute top-[60px] left-[14px] z-[5] grid h-9 w-9 place-items-center rounded-full bg-[#F4F4F6]">
<ChevronLeft className="h-4 w-4 stroke-ink-900" strokeWidth={2.2} />
</button><h1 className="absolute top-[124px] inset-x-6 text-center text-[26px] font-extrabold tracking-[-0.4px] text-ink-900"> Enable permissions </h1>
<p className="absolute top-[168px] inset-x-0 text-center text-[13px] font-semibold text-ink-300"> 2 of 3 enabled </p>
<div className="absolute top-[216px] inset-x-5 flex items-center gap-[13px] rounded-2xl border border-[#F6EFE0] bg-[#FBF6EC] px-4 py-[18px]">
<span className="grid h-[42px] w-[42px] flex-none place-items-center text-[24px]">📍</span>
<span className="min-w-0 flex-1">
<span className="block text-[16px] font-extrabold text-ink-900">Location</span>
<span className="mt-[2px] block text-[12.5px] font-medium text-ink-500">Find live moments near you — the whole app runs on it.</span>
</span>
<span className="grid h-[30px] w-[30px] flex-none place-items-center rounded-[9px] border border-azure-600 bg-azure-600 text-[15px] font-extrabold text-white shadow-[0_3px_10px_rgba(29,111,242,.35)]">✓</span>
</div><div className="absolute top-[330px] inset-x-5 flex items-center gap-[13px] rounded-2xl border border-[#F6EFE0] bg-[#FBF6EC] px-4 py-[18px]">
<span className="grid h-[42px] w-[42px] flex-none place-items-center text-[24px]">👥</span>
<span className="min-w-0 flex-1">
<span className="block text-[16px] font-extrabold text-ink-900">Contacts</span>
<span className="mt-[2px] block text-[12.5px] font-medium text-ink-500">See which friends are already here.</span>
</span>
<span className="h-[30px] w-[30px] flex-none rounded-[9px] border-[1.5px] border-[#E3E2E7] bg-white" />
</div><div className="absolute top-[444px] inset-x-5 flex items-center gap-[13px] rounded-2xl border border-[#F6EFE0] bg-[#FBF6EC] px-4 py-[18px]">
<span className="grid h-[42px] w-[42px] flex-none place-items-center text-[24px]">🔔</span>
<span className="min-w-0 flex-1">
<span className="block text-[16px] font-extrabold text-ink-900">Notifications</span>
<span className="mt-[2px] block text-[12.5px] font-medium text-ink-500">Know when friends step out or ping you.</span>
</span>
<span className="grid h-[30px] w-[30px] flex-none place-items-center rounded-[9px] border border-[#D4A017] bg-[#D4A017] text-[15px] font-extrabold text-white shadow-[0_3px_10px_rgba(212,160,23,.35)]">✓</span>
</div><p className="absolute bottom-[44px] inset-x-0 text-center text-[11.5px] font-medium text-ink-300"> You can change these anytime in Settings. </p>
<button className="absolute bottom-[70px] left-1/2 w-[220px] -translate-x-1/2 inline-flex h-[50px] items-center justify-center rounded-full bg-azure-500 text-[15.5px] font-extrabold text-white disabled:bg-[#A9CCFF] disabled:shadow-none"> next → </button>
<span className="absolute bottom-2 left-1/2 z-[31] h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
<span className="absolute inset-x-0 top-0 h-[426px] rounded-b-[28px] bg-[linear-gradient(180deg,#1D6FF2_0%,#3D8BFF_100%)]" />
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-white/[0.16]">
<ChevronLeft className="size-4 text-white" strokeWidth={2.2} />
</button><h1 className="absolute top-[124px] inset-x-6 text-center text-[26px] font-extrabold tracking-[-0.4px] text-white">Join The Crowd</h1>
<button className="absolute top-[216px] inset-x-5 flex items-start gap-[13px] rounded-2xl bg-white px-4 py-[18px] shadow-[0_10px_30px_rgba(13,47,102,0.25)]">
<span className="grid h-[42px] w-[42px] flex-none place-items-center text-[24px]">🔥</span>
<span className="min-w-0 flex-1 text-left">
<span className="block text-[16px] font-extrabold text-ink-900">Count me in</span>
<span className="mt-[2px] block text-[12.5px] font-medium leading-[1.4] text-ink-500">Meet friends and friend groups, and see trending spots and parties near you.</span>
</span>
<span className="grid h-[30px] w-[30px] flex-none place-items-center rounded-[9px] border border-azure-600 bg-azure-600 text-[15px] font-extrabold text-white shadow-[0_3px_10px_rgba(29,111,242,.35)]">✓</span>
</button><button className="absolute top-[470px] inset-x-5 flex items-start gap-[13px] rounded-2xl border border-[#E8E8EC] bg-[#F4F4F6] px-4 py-[18px]">
<span className="grid h-[42px] w-[42px] flex-none place-items-center text-[24px]">👻</span>
<span className="min-w-0 flex-1 text-left">
<span className="block text-[16px] font-extrabold text-ink-900">Stay invisible</span>
<span className="mt-[2px] block text-[12.5px] font-medium leading-[1.4] text-ink-500">You won't meet new friends and friends won't meet you.</span>
</span>
<span className="h-[30px] w-[30px] flex-none rounded-[9px] border-[1.5px] border-[#E3E2E7] bg-white" />
</button><button className="absolute bottom-[70px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white">next →</button>
<span className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-[#F4F4F6]">
<ChevronLeft className="size-4 text-ink-900" strokeWidth={2.2} />
</button><h1 className="absolute top-[152px] inset-x-6 text-center text-[22px] font-extrabold leading-[1.3] tracking-[-0.3px] text-ink-900"> add friends if you<br />know them </h1>
<div className="absolute inset-x-5 top-[246px] flex items-center gap-[13px] rounded-2xl border border-[#F6EFE0] bg-[#FBF6EC] px-3.5 py-[11px]">
{avatar}{name}{action}
</div>
{/* second card identical, top-[322px] */}<span className="grid size-[38px] flex-none place-items-center rounded-full bg-[#FDF0D9] text-[13px] font-extrabold text-amber-500">AT</span>
<span className="block size-[38px] flex-none rounded-full bg-cover bg-center"
style={{ backgroundImage: `url(${photoMike})` }} /><span className="min-w-0 flex-1 truncate text-[13.5px] font-bold text-ink-900">Amin Tabrizian</span>
<button className="inline-flex h-8 flex-none items-center gap-1.5 rounded-full bg-azure-500 px-[13px] text-[12.5px] font-extrabold lowercase text-white">
<UserPlus className="size-3.5" strokeWidth={2.2} />add
</button><span className="inline-flex h-8 flex-none items-center rounded-full bg-azure-100 px-[13px] text-[12.5px] font-extrabold text-azure-600">added ✓</span>
<button className="absolute bottom-[66px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white">next →</button>
<h1 className="absolute top-[152px] inset-x-6 text-center text-[22px] font-extrabold leading-[1.3] tracking-[-0.3px] text-ink-900">
{accountMode === 'org' ? 'add your team' : <>add friends if you<br />know them</>}
</h1><div className="absolute inset-x-5 top-[246px] flex items-center gap-[13px] rounded-2xl border border-[#F6EFE0] bg-[#FBF6EC] px-3.5 py-[11px]">
{avatar}{name}{inviteAction}
</div><span className="grid size-[38px] flex-none place-items-center rounded-full bg-[#FDF0D9] text-[13px] font-extrabold text-amber-500">KD</span>
<button className="inline-flex h-8 flex-none items-center gap-1.5 rounded-full bg-azure-500 px-[13px] text-[12.5px] font-extrabold lowercase text-white">
<UserPlus className="size-3.5" strokeWidth={2.2} />invite
</button><span className="inline-flex h-8 flex-none items-center rounded-full bg-azure-100 px-[13px] text-[12.5px] font-extrabold text-azure-600">invited ✓</span>
<button className="absolute left-3.5 top-[60px] grid size-9 place-items-center rounded-full bg-[#F4F4F6]">
<ChevronLeft className="size-4 text-ink-900" strokeWidth={2.2} />
</button><div className="absolute top-[296px] inset-x-5 grid h-[260px] place-items-center rounded-[20px] border-2 border-dashed border-[#C9C7CF] bg-[#FAFAFB]/80">
<Lottie animationData={appTour} loop autoplay />
</div><button className="absolute bottom-[66px] left-1/2 h-[50px] w-[220px] -translate-x-1/2 rounded-full bg-azure-500 text-[15.5px] font-extrabold lowercase text-white">complete!</button>
<span className="absolute bottom-2 left-1/2 h-[5px] w-[134px] -translate-x-1/2 rounded-[3px] bg-black/40" />
Your five palettes, mixed for maximum contrast: royal blue actions, burnt-orange LIVE, gold for pending, forest green for positive signals, cream paper. Nothing here touches the real pages — toggle between the shipped palette and the experiment.