{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4d06-7d32-91a8-75b99f5eae7b","file":"78.CfzgtzYG.mjs","mappings":"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","names":["contest","isLoggedIn","isRater","$.derived","$$props","feed","$.state","$.proxy","qi","$.user_effect","$.set","current","$.get","standings","totalVotes","swipe","busy","loginNudge","likedToday","reportOpen","reportEntryId","openReport","entryId","shareMyEntry","shareOrCopy","contestEntryShareUrl","CONTEST_SHARE_TITLE","contestShareText","CROSSPOST_COST","crossPosting","crossPosted","crossPostToast","showBuyTokens","boostMyEntry","res","body","fmt","n","bumpLocal","r","a","b","i","decide","dir","card","invalidateAll","max","tiers","t","topPrize","placeLabel","rules","now","iv","countdown","s","d","h","m","sec","p","main","$.first_child","fragment","RaterContestBoard","$$anchor","ContestRecap","header","fragment_4","div","div_1","p_1","p_2","span","root_5","span_1","root_6","$$render","consequent_3","alternate","div_2","$.sibling","node_2","$.child","span_2","root_7","span_3","root_8","consequent_4","alternate_1","span_4","span_5","fragment_5","span_6","consequent_5","$.reset","div_3","section","div_4","div_5","root_10","node_5","video","root_11","$.append","img","root_12","consequent_6","alternate_2","button","node_6","div_6","root_13","text_5","$.template_effect","$.set_text","consequent_7","div_7","node_7","getAvatarUrl","DuelAvatar","div_8","p_3","text_6","p_4","text_7","consequent_8","span_7","node_8","$.delegated","button_1","root_15","a_1","root_16","consequent_10","alternate_3","div_9","node_4","button_2","button_3","p_5","root_17","p_6","root_18","consequent_11","alternate_4","aside","div_10","span_8","p_7","root_19","div_11","root_20","$.each","row","a_2","root_21","span_9","text_11","node_11","div_12","p_8","text_12","span_10","root_22","text_13","consequent_13","div_13","div_14","span_11","text_14","$.set_class","$.set_style","$1","flip","consequent_12","alternate_5","div_15","section_1","p_9","span_12","fragment_7","consequent_14","alternate_6","section_2","h2","p_10","root_25","div_16","fragment_8","tier","div_17","root_27","p_11","text_18","p_12","text_19","consequent_15","alternate_7","section_3","ul","rule","li","root_28","span_13","text","text_3","text_17","consequent","alternate_8","consequent_2","div_18","root_29","node_16","div_19","root_30","text_21","consequent_16","div_20","node_17","a_3","fragment_9","node_18","button_4","root_32","node_19","span_14","fragment_11","TokenCoin","consequent_17","alternate_9","consequent_18","a_4","button_5","consequent_19","alternate_10","consequent_20","ReportContentModal","$$value","consequent_21","BuyTokensModal","node_22"],"sources":["../../../../../../src/routes/contest/+page.svelte"],"sourcesContent":["<script lang=\"ts\">\n\timport { flip } from 'svelte/animate';\n\timport { invalidateAll, goto } from '$app/navigation';\n\timport DuelAvatar from '$lib/components/duel/DuelAvatar.svelte';\n\timport { getAvatarUrl } from '$lib/avatar';\n\timport ReportContentModal from '$lib/components/ReportContentModal.svelte';\n\timport BuyTokensModal from '$lib/components/BuyTokensModal.svelte';\n\timport TokenCoin from '$lib/components/TokenCoin.svelte';\n\timport { shareOrCopy } from '$lib/share';\n\timport { contestEntryShareUrl, CONTEST_SHARE_TITLE, contestShareText } from '$lib/contest-share';\n\timport ContestRecap from '$lib/components/contest/ContestRecap.svelte';\n\timport RaterContestBoard from '$lib/components/contest/RaterContestBoard.svelte';\n\timport type { ContestStandingRow, ContestVoteCard } from '$lib/types/contest';\n\n\tlet { data } = $props();\n\n\tconst contest = $derived(data.contest);\n\tconst isLoggedIn = $derived(data.isLoggedIn);\n\t// Rater of the week: a different board, a different page. Everything below\n\t// the branch is the photo pageant.\n\tconst isRater = $derived(data.kind === 'rater');\n\n\t// Vote-feed queue — seeded from load, resynced after invalidateAll (RAT-117 pattern).\n\tlet feed = $state<ContestVoteCard[]>([...data.feed]);\n\tlet qi = $state(0);\n\t$effect(() => {\n\t\tfeed = [...data.feed];\n\t\tqi = 0;\n\t});\n\tconst current = $derived(feed[qi] ?? null);\n\n\t// Standings — seeded from load and resynced on every navigation / invalidateAll\n\t// (RAT-117 pattern). Realtime push was removed: un-ordered broadcasts left each\n\t// client stuck on a divergent top-1 (users thought the counts were faked), so\n\t// the board now reflects the authoritative server fetch and updates on refresh /\n\t// when the vote queue refills.\n\tlet standings = $state<ContestStandingRow[]>([...data.standings]);\n\tlet totalVotes = $state(data.totalVotes);\n\t$effect(() => {\n\t\tstandings = [...data.standings];\n\t\ttotalVotes = data.totalVotes;\n\t});\n\n\tlet swipe = $state<'' | 'like' | 'pass'>('');\n\tlet busy = $state(false);\n\tlet loginNudge = $state(false);\n\tlet likedToday = $state(0);\n\n\t// RAT-388: report the currently-shown entry. Capture the id at click time so\n\t// it can't drift if the card advances while the modal is open.\n\tlet reportOpen = $state(false);\n\tlet reportEntryId = $state<string | null>(null);\n\tfunction openReport(entryId: string) {\n\t\treportEntryId = entryId;\n\t\treportOpen = true;\n\t}\n\n\t// RAT-389: share your own entry to rally votes. Sync call in the handler\n\t// (iOS activation) — native share sheet → clipboard fallback.\n\tfunction shareMyEntry() {\n\t\tif (!data.myEntry) return;\n\t\tshareOrCopy({\n\t\t\turl: contestEntryShareUrl(data.myEntry.id),\n\t\t\ttitle: CONTEST_SHARE_TITLE,\n\t\t\ttext: contestShareText()\n\t\t});\n\t}\n\n\t// Boost your entry into the arena for 24h (50 tokens). Same flow as the entry\n\t// page — kept here so the sticky bar can trigger it without a page hop.\n\tconst CROSSPOST_COST = 50;\n\tlet crossPosting = $state(false);\n\tlet crossPosted = $state(false);\n\tlet crossPostToast = $state<string | null>(null);\n\tlet showBuyTokens = $state(false);\n\tasync function boostMyEntry() {\n\t\tif (!data.myEntry || crossPosting || crossPosted) return;\n\t\tif (!confirm(`Boost your entry into the arena for 24h? Costs ${CROSSPOST_COST} tokens.`))\n\t\t\treturn;\n\t\tcrossPosting = true;\n\t\tcrossPostToast = null;\n\t\ttry {\n\t\t\tconst res = await fetch(`/api/contest/e/${data.myEntry.id}/crosspost`, { method: 'POST' });\n\t\t\tconst body = await res.json().catch(() => ({}));\n\t\t\tif (res.ok) {\n\t\t\t\tcrossPosted = true;\n\t\t\t\tcrossPostToast = \"you're in the arena for 24h — upvotes there count here.\";\n\t\t\t} else if (res.status === 402) {\n\t\t\t\tshowBuyTokens = true;\n\t\t\t} else if (body.error === 'already_active') {\n\t\t\t\tcrossPosted = true;\n\t\t\t\tcrossPostToast = \"already boosted — you're in the arena right now.\";\n\t\t\t} else {\n\t\t\t\tcrossPostToast = 'could not boost — try again.';\n\t\t\t}\n\t\t} catch {\n\t\t\tcrossPostToast = 'network error — try again.';\n\t\t} finally {\n\t\t\tcrossPosting = false;\n\t\t\tif (crossPostToast) setTimeout(() => (crossPostToast = null), 4000);\n\t\t}\n\t}\n\n\tconst fmt = (n: number) => n.toLocaleString('en-US');\n\n\t// Optimistic local bump so the voter sees their like land on the board\n\t// immediately. The authoritative numbers come back on the next invalidateAll\n\t// (queue refill) or manual refresh via the reseed $effect above.\n\tfunction bumpLocal(entryId: string) {\n\t\tstandings = standings\n\t\t\t.map((r) => (r.entryId === entryId ? { ...r, totalLikes: r.totalLikes + 1 } : r))\n\t\t\t.sort((a, b) => b.totalLikes - a.totalLikes)\n\t\t\t.map((r, i) => ({ ...r, rank: i + 1 }));\n\t\ttotalVotes += 1;\n\t}\n\n\tasync function decide(dir: 'like' | 'pass') {\n\t\tif (!current || busy) return;\n\t\tif (!isLoggedIn) {\n\t\t\tloginNudge = true;\n\t\t\treturn;\n\t\t}\n\t\tconst card = current;\n\t\tbusy = true;\n\t\tswipe = dir;\n\t\tif (dir === 'like') {\n\t\t\tlikedToday += 1;\n\t\t\tbumpLocal(card.entryId);\n\t\t}\n\t\t// fire-and-forget the vote; advance the screen regardless of network latency\n\t\tfetch('/api/contest/vote', {\n\t\t\tmethod: 'POST',\n\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\tbody: JSON.stringify({ entryId: card.entryId, vote: dir })\n\t\t}).catch(() => {});\n\n\t\tsetTimeout(async () => {\n\t\t\tswipe = '';\n\t\t\tbusy = false;\n\t\t\tif (qi + 1 >= feed.length) {\n\t\t\t\tawait invalidateAll(); // refill the queue (resets qi via $effect)\n\t\t\t} else {\n\t\t\t\tqi += 1;\n\t\t\t}\n\t\t}, 380);\n\t}\n\n\tconst max = $derived(standings[0]?.totalLikes ?? 1);\n\t// Free-text prize per place, index = place - 1. Empty tiers are skipped.\n\tconst tiers = $derived((contest?.prizeTiers ?? []).filter((t) => t.trim().length > 0));\n\tconst topPrize = $derived(tiers[0] ?? null);\n\tconst placeLabel = (i: number) => (i === 0 ? '1st place' : i === 1 ? '2nd' : '3rd');\n\n\tconst rules = [\n\t\t'free to enter — no fee, no tokens, ever.',\n\t\t'registered users only, 18+. one account, one entry per week.',\n\t\t'real photos of you only — fake, stolen, or AI-generated pics are a permanent ban.',\n\t\t'one vote per entry — no buying votes, no vote-farming.',\n\t\t'ranked purely by votes. most votes wins — not chance, not AI.',\n\t\t'top 3 by votes win. the board resets when the contest closes.',\n\t\t'prizes handed over by hand — winners take the reward up top.',\n\t\t'remove your entry anytime. void where prohibited.'\n\t];\n\n\t// Live countdown to the week's close (only when an end time is set).\n\tlet now = $state(Date.now());\n\t$effect(() => {\n\t\tif (!contest?.votingEndsAt) return;\n\t\tconst iv = setInterval(() => (now = Date.now()), 1000);\n\t\treturn () => clearInterval(iv);\n\t});\n\tconst countdown = $derived.by(() => {\n\t\tif (!contest?.votingEndsAt) return null;\n\t\tlet s = Math.max(0, Math.floor((new Date(contest.votingEndsAt).getTime() - now) / 1000));\n\t\tconst d = Math.floor(s / 86400);\n\t\ts -= d * 86400;\n\t\tconst h = Math.floor(s / 3600);\n\t\ts -= h * 3600;\n\t\tconst m = Math.floor(s / 60);\n\t\tconst sec = s - m * 60;\n\t\tconst p = (n: number) => String(n).padStart(2, '0');\n\t\treturn `${d}d ${p(h)}:${p(m)}:${p(sec)}`;\n\t});\n</script>\n\n<main class=\"mx-auto max-w-6xl px-5 pt-24 pb-40 md:px-8 md:pt-28 md:pb-28\">\n\t{#if isRater && contest}\n\t\t<RaterContestBoard\n\t\t\t{contest}\n\t\t\trows={data.raterStandings}\n\t\t\tmyRow={data.myRaterRow}\n\t\t\tvote={data.raterVote}\n\t\t\teligibleRaters={data.eligibleRaters}\n\t\t\ttotalScored={data.totalScored}\n\t\t\tpreview={data.preview}\n\t\t\tviewerId={data.viewerId}\n\t\t\tviewerEligible={data.viewer.eligible}\n\t\t\tviewerNick={data.viewer.nickname}\n\t\t\tviewerAvatar={data.viewer.avatarPath}\n\t\t\tmode=\"live\"\n\t\t/>\n\t{:else if isRater && data.lastContest}\n\t\t<RaterContestBoard\n\t\t\tcontest={data.lastContest}\n\t\t\trows={data.lastRaterBoard}\n\t\t\tmyRow={data.lastRaterBoard.find((r) => r.userId === data.viewerId) ?? null}\n\t\t\tvote={data.raterVote}\n\t\t\teligibleRaters={data.lastRaterBoard.length}\n\t\t\tviewerId={data.viewerId}\n\t\t\tviewerEligible={data.viewer.eligible}\n\t\t\tviewerNick={data.viewer.nickname}\n\t\t\tviewerAvatar={data.viewer.avatarPath}\n\t\t\tmode=\"closed\"\n\t\t/>\n\t{:else if !contest}\n\t\t<ContestRecap\n\t\t\tlastContest={data.lastContest}\n\t\t\tlastStandings={data.lastStandings}\n\t\t\tmyEntry={data.myRecapEntry}\n\t\t/>\n\t{:else}\n\t\t<!-- compact header — keeps the voting card high on the page (esp. mobile) -->\n\t\t<header>\n\t\t\t<div class=\"flex items-start justify-between gap-4\">\n\t\t\t\t<div>\n\t\t\t\t\t<p class=\"text-[11px] font-semibold tracking-[0.3em] text-coral uppercase\">\n\t\t\t\t\t\tweekly contest — week {contest.weekNumber}\n\t\t\t\t\t</p>\n\t\t\t\t\t<h1\n\t\t\t\t\t\tclass=\"mt-2 font-display text-[clamp(1.9rem,6vw,3.5rem)] leading-[0.95] font-bold tracking-tighter\"\n\t\t\t\t\t>\n\t\t\t\t\t\tthe world's most <span class=\"text-coral\">beautiful.</span>\n\t\t\t\t\t</h1>\n\t\t\t\t</div>\n\t\t\t\t<!-- live badge — same row as the title, opposite side (incl. mobile) -->\n\t\t\t\t<span\n\t\t\t\t\tclass=\"mt-1 flex shrink-0 items-center gap-2 text-[11px] font-semibold tracking-[0.16em] text-coral uppercase\"\n\t\t\t\t>\n\t\t\t\t\t<span class=\"relative flex h-1.5 w-1.5\"\n\t\t\t\t\t\t><span\n\t\t\t\t\t\t\tclass=\"absolute inline-flex h-full w-full animate-ping rounded-full bg-coral opacity-60\"\n\t\t\t\t\t\t></span><span class=\"relative inline-flex h-full w-full rounded-full bg-coral\"\n\t\t\t\t\t\t></span></span\n\t\t\t\t\t>\n\t\t\t\t\tlive\n\t\t\t\t</span>\n\t\t\t</div>\n\n\t\t\t<p class=\"mt-3 max-w-xl text-[13px] leading-relaxed text-muted\">\n\t\t\t\tthanks for rocking with us, lol — so we threw you an event where the single most beautiful\n\t\t\t\tcannon on the site walks away with {#if topPrize}<span class=\"text-text\">{topPrize}</span\n\t\t\t\t\t>{:else}<span class=\"text-text\">the prize</span>{/if}.\n\t\t\t</p>\n\n\t\t\t<div\n\t\t\t\tclass=\"mt-4 flex flex-wrap items-center gap-x-4 gap-y-1.5 text-[11px] font-semibold tracking-[0.16em] uppercase\"\n\t\t\t>\n\t\t\t\t{#if topPrize}\n\t\t\t\t\t<span class=\"text-text\">{topPrize} <span class=\"text-muted\">1st prize</span></span>\n\t\t\t\t{:else}\n\t\t\t\t\t<span class=\"text-text\">glory <span class=\"text-muted\">only</span></span>\n\t\t\t\t{/if}\n\t\t\t\t<span class=\"h-3 w-px bg-border\"></span>\n\t\t\t\t<span class=\"text-text\">{standings.length} <span class=\"text-muted\">entries</span></span>\n\t\t\t\t{#if countdown}\n\t\t\t\t\t<span class=\"h-3 w-px bg-border\"></span>\n\t\t\t\t\t<span class=\"text-text\"\n\t\t\t\t\t\t><span class=\"text-muted\">ends in</span>\n\t\t\t\t\t\t<span class=\"font-display tracking-normal text-coral tabular-nums\">{countdown}</span\n\t\t\t\t\t\t></span\n\t\t\t\t\t>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</header>\n\n\t\t<div class=\"mt-6 grid grid-cols-1 gap-8 lg:grid-cols-[1fr_23rem] lg:gap-12\">\n\t\t\t<!-- VOTE NOW — first on mobile, immediate -->\n\t\t\t<section>\n\t\t\t\t<div class=\"mb-3 flex items-center justify-between\">\n\t\t\t\t\t<h2 class=\"text-[11px] font-semibold tracking-[0.22em] text-text uppercase\">\n\t\t\t\t\t\tnow judging\n\t\t\t\t\t</h2>\n\t\t\t\t\t<span class=\"text-[11px] text-muted\"\n\t\t\t\t\t\t>do you like it<span class=\"text-text\">?</span> be honest.</span\n\t\t\t\t\t>\n\t\t\t\t</div>\n\n\t\t\t\t<div class=\"mx-auto w-full max-w-md\">\n\t\t\t\t\t{#if current}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"stage-anim relative aspect-[4/5] w-full overflow-hidden rounded-2xl border border-border bg-surface {swipe ===\n\t\t\t\t\t\t\t'like'\n\t\t\t\t\t\t\t\t? 'stage-out-right'\n\t\t\t\t\t\t\t\t: swipe === 'pass'\n\t\t\t\t\t\t\t\t\t? 'stage-out-left'\n\t\t\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{#if current.mediaType === 'video'}\n\t\t\t\t\t\t\t\t<video\n\t\t\t\t\t\t\t\t\tsrc={current.imageUrl}\n\t\t\t\t\t\t\t\t\tautoplay\n\t\t\t\t\t\t\t\t\tmuted\n\t\t\t\t\t\t\t\t\tloop\n\t\t\t\t\t\t\t\t\tplaysinline\n\t\t\t\t\t\t\t\t\tclass=\"absolute inset-0 h-full w-full object-cover\"\n\t\t\t\t\t\t\t\t></video>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\tsrc={current.imageUrl}\n\t\t\t\t\t\t\t\t\talt=\"contest entry\"\n\t\t\t\t\t\t\t\t\tclass=\"absolute inset-0 h-full w-full object-cover\"\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\t\tonclick={() => openReport(current.entryId)}\n\t\t\t\t\t\t\t\tclass=\"absolute top-3 right-3 z-10 rounded-full bg-black/45 p-1.5 text-white/70 backdrop-blur-sm transition-colors hover:text-white\"\n\t\t\t\t\t\t\t\taria-label=\"report this entry\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\tstroke-width=\"2\"\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<path d=\"M5 21V4\" />\n\t\t\t\t\t\t\t\t\t<path d=\"M5 4h12l-2.5 3.5L17 11H5\" />\n\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t{#if current.aiScore != null}\n\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\tclass=\"absolute top-4 left-4 rounded border border-orange/20 bg-bg/80 px-2.5 py-1 text-[11px] font-medium text-orange backdrop-blur-sm\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{current.aiScore} / 10\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"absolute inset-x-0 bottom-0 flex items-center gap-3.5 bg-gradient-to-t from-black/90 via-black/40 to-transparent p-5 pt-16\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\t\t\t\tnickname={current.nickname}\n\t\t\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(current.avatarPath)}\n\t\t\t\t\t\t\t\t\tsize={44}\n\t\t\t\t\t\t\t\t\tlink={false}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<div class=\"min-w-0\">\n\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\tclass=\"truncate font-display text-xl font-bold tracking-tight text-white md:text-2xl\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{current.displayName}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<p class=\"truncate text-[12px] text-white/60\">\n\t\t\t\t\t\t\t\t\t\t{#if current.tagline}\"{current.tagline}\" ·\n\t\t\t\t\t\t\t\t\t\t{/if}<span class=\"tabular-nums\">{fmt(current.totalLikes)}</span> votes\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{:else if data.myEntry}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonclick={shareMyEntry}\n\t\t\t\t\t\t\tclass=\"grid aspect-[4/5] w-full place-items-center rounded-2xl border border-border bg-surface transition-colors hover:border-coral/40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"px-8 text-center\">\n\t\t\t\t\t\t\t\t<p class=\"font-display text-lg font-bold text-text\">you've judged everyone.</p>\n\t\t\t\t\t\t\t\t<p class=\"mt-1.5 text-[12px] text-muted\">\n\t\t\t\t\t\t\t\t\tthat's the whole field. now go win yours —\n\t\t\t\t\t\t\t\t\t<span class=\"font-semibold text-coral\">share it for votes →</span>\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"/contest/enter\"\n\t\t\t\t\t\t\tclass=\"grid aspect-[4/5] w-full place-items-center rounded-2xl border border-border bg-surface no-underline transition-colors hover:border-coral/40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<div class=\"px-8 text-center\">\n\t\t\t\t\t\t\t\t<p class=\"font-display text-lg font-bold text-text\">you've judged everyone.</p>\n\t\t\t\t\t\t\t\t<p class=\"mt-1.5 text-[12px] text-muted\">\n\t\t\t\t\t\t\t\t\tthat's the whole field — now drop your own.\n\t\t\t\t\t\t\t\t\t<span class=\"font-semibold text-coral\">enter the contest →</span>\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<!-- decision -->\n\t\t\t\t\t<div class=\"mt-4 grid grid-cols-2 gap-3\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonclick={() => decide('pass')}\n\t\t\t\t\t\t\tdisabled={!current || busy}\n\t\t\t\t\t\t\tclass=\"flex items-center justify-center gap-2.5 rounded-xl border border-coral/25 bg-coral/[.06] py-4 text-coral transition-all hover:bg-coral/[.12] active:scale-[.98] disabled:opacity-40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"h-5 w-5\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M6 18L18 6M6 6l12 12\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"font-display text-sm font-bold tracking-wider uppercase\">pass</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonclick={() => decide('like')}\n\t\t\t\t\t\t\tdisabled={!current || busy}\n\t\t\t\t\t\t\tclass=\"flex items-center justify-center gap-2.5 rounded-xl border border-green/25 bg-green/[.06] py-4 text-green transition-all hover:bg-green/[.12] active:scale-[.98] disabled:opacity-40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"h-5 w-5\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M4.5 12.75l6 6 9-13.5\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"font-display text-sm font-bold tracking-wider uppercase\">like</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\t\t\t\t\t{#if loginNudge}\n\t\t\t\t\t\t<p class=\"mt-3 text-center text-[12px] text-coral\">\n\t\t\t\t\t\t\tyou need an account to vote — <a href=\"/auth/sign-in\" class=\"font-semibold underline\"\n\t\t\t\t\t\t\t\t>log in or sign up</a\n\t\t\t\t\t\t\t> (it's free).\n\t\t\t\t\t\t</p>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<p class=\"mt-3 text-center text-[11px] text-muted/50\">\n\t\t\t\t\t\t\tone vote per entry · judged {likedToday} today\n\t\t\t\t\t\t</p>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- LIVE STANDINGS -->\n\t\t\t<aside>\n\t\t\t\t<div class=\"mb-4 flex items-center justify-between border-b border-border pb-3\">\n\t\t\t\t\t<h2 class=\"text-[11px] font-semibold tracking-[0.22em] text-text uppercase\">\n\t\t\t\t\t\tlive standings\n\t\t\t\t\t</h2>\n\t\t\t\t\t<span class=\"font-display text-[13px] font-bold text-text tabular-nums\"\n\t\t\t\t\t\t>{fmt(totalVotes)}\n\t\t\t\t\t\t<span class=\"text-[10px] font-semibold tracking-wider text-muted uppercase\">votes</span\n\t\t\t\t\t\t></span\n\t\t\t\t\t>\n\t\t\t\t</div>\n\n\t\t\t\t{#if standings.length === 0}\n\t\t\t\t\t<p class=\"py-8 text-center text-[13px] text-muted\">\n\t\t\t\t\t\tno entries yet. be the first — <a\n\t\t\t\t\t\t\thref=\"/contest/enter\"\n\t\t\t\t\t\t\tclass=\"font-semibold text-coral underline\">enter free</a\n\t\t\t\t\t\t>.\n\t\t\t\t\t</p>\n\t\t\t\t{:else}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t{#each standings.slice(0, 20) as row, i (row.entryId)}\n\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\thref=\"/contest/e/{row.entryId}\"\n\t\t\t\t\t\t\t\tanimate:flip={{ duration: 500 }}\n\t\t\t\t\t\t\t\tclass=\"flex items-center gap-3 border-b border-border/60 py-2.5 no-underline transition-colors hover:bg-white/[0.015]\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"w-5 shrink-0 text-center font-display text-[13px] font-bold tabular-nums {i ===\n\t\t\t\t\t\t\t\t\t0\n\t\t\t\t\t\t\t\t\t\t? 'text-coral'\n\t\t\t\t\t\t\t\t\t\t: 'text-muted'}\">{String(i + 1).padStart(2, '0')}</span\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\t\t\t\tnickname={row.nickname}\n\t\t\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(row.avatarPath)}\n\t\t\t\t\t\t\t\t\tsize={30}\n\t\t\t\t\t\t\t\t\tlink={false}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t<div class=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\t\tclass=\"truncate font-display text-[13px] font-semibold {i === 0\n\t\t\t\t\t\t\t\t\t\t\t? 'text-coral'\n\t\t\t\t\t\t\t\t\t\t\t: 'text-text'}\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t{row.displayName}{#if row.prizeLabel}<span\n\t\t\t\t\t\t\t\t\t\t\t\tclass=\"ml-1.5 font-display text-[10px] font-bold tracking-wider text-coral uppercase\"\n\t\t\t\t\t\t\t\t\t\t\t\t>{row.prizeLabel}</span\n\t\t\t\t\t\t\t\t\t\t\t>{/if}\n\t\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t\t<div class=\"mt-1 h-1 overflow-hidden rounded-full bg-surface-2\">\n\t\t\t\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\t\t\t\tclass=\"h-full rounded-full {i === 0 ? 'bg-coral' : 'bg-muted/40'}\"\n\t\t\t\t\t\t\t\t\t\t\tstyle=\"width:{Math.max(3, Math.round((row.totalLikes / max) * 100))}%\"\n\t\t\t\t\t\t\t\t\t\t></div>\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"shrink-0 font-display text-[13px] font-bold tabular-nums {i === 0\n\t\t\t\t\t\t\t\t\t\t? 'text-coral'\n\t\t\t\t\t\t\t\t\t\t: 'text-text/90'}\">{fmt(row.totalLikes)}</span\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<!-- tap the row → entry page, where the voter list unlocks. -->\n\t\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\t\tclass=\"ml-0.5 flex shrink-0 items-center gap-1 rounded-full border border-border bg-surface px-2 py-1 text-[10px] font-semibold tracking-wider text-muted uppercase\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\t\t\tclass=\"h-3 w-3\"\n\t\t\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t\t<path d=\"M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7-10-7-10-7Z\" />\n\t\t\t\t\t\t\t\t\t\t<circle cx=\"12\" cy=\"12\" r=\"3\" />\n\t\t\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t\t\t\t<span class=\"hidden sm:inline\">voters</span>\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</aside>\n\t\t</div>\n\n\t\t<!-- everything worth knowing — kept down here so voting stays up top -->\n\t\t<div class=\"mt-20 space-y-14 border-t border-border pt-12\">\n\t\t\t<!-- the pitch -->\n\t\t\t<section class=\"max-w-2xl\">\n\t\t\t\t<h2 class=\"font-display text-2xl font-bold tracking-tight text-text md:text-3xl\">\n\t\t\t\t\twhat even is this.\n\t\t\t\t</h2>\n\t\t\t\t<p class=\"mt-3 text-[15px] leading-relaxed text-muted\">\n\t\t\t\t\ta weekly beauty pageant for the one body part you were raised to keep to yourself. enter\n\t\t\t\t\tfree, let the crowd vote, and when voting closes the top entries take the rewards below —\n\t\t\t\t\t{#if topPrize}<span class=\"text-text\">{topPrize}</span> for the winner, questionable judgment\n\t\t\t\t\t\tfor everyone.{:else}winner takes the crown.{/if} then we wipe it and run it back.\n\t\t\t\t</p>\n\t\t\t</section>\n\n\t\t\t<!-- how it works -->\n\t\t\t<section>\n\t\t\t\t<h2 class=\"mb-5 font-display text-2xl font-bold tracking-tight text-text md:text-3xl\">\n\t\t\t\t\thow it works.\n\t\t\t\t</h2>\n\t\t\t\t<div class=\"grid grid-cols-1 gap-4 sm:grid-cols-3\">\n\t\t\t\t\t<div class=\"rounded-xl border border-border bg-surface p-5\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"mb-3 inline-flex h-9 w-9 items-center justify-center rounded-lg bg-coral text-white\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"1.8\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5m-13.5-9L12 3m0 0l4.5 4.5M12 3v13.5\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class=\"font-display text-base font-bold text-text\">enter free</p>\n\t\t\t\t\t\t<p class=\"mt-1.5 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\tdrop your best work. no fee, no tokens, no shame. one entry per week.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"rounded-xl border border-border bg-surface p-5\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"mb-3 inline-flex h-9 w-9 items-center justify-center rounded-lg bg-coral text-white\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M4.5 12.75l6 6 9-13.5\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class=\"font-display text-base font-bold text-text\">the crowd votes</p>\n\t\t\t\t\t\t<p class=\"mt-1.5 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\tlogged-in strangers swipe through every entry and like the ones that earn it. one vote\n\t\t\t\t\t\t\tper entry, no buying votes.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"rounded-xl border border-border bg-surface p-5\">\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"mb-3 inline-flex h-9 w-9 items-center justify-center rounded-lg bg-coral text-white\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"1.5\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M11.48 3.5a.56.56 0 011.04 0l2.12 5.11a.56.56 0 00.48.35l5.52.44c.5.04.7.66.32.99l-4.2 3.6a.56.56 0 00-.18.56l1.28 5.38a.56.56 0 01-.84.61l-4.72-2.88a.56.56 0 00-.59 0l-4.72 2.88a.56.56 0 01-.84-.61l1.28-5.38a.56.56 0 00-.18-.56l-4.2-3.6a.56.56 0 01.32-.99l5.52-.44a.56.56 0 00.48-.35z\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<p class=\"font-display text-base font-bold text-text\">most votes wins</p>\n\t\t\t\t\t\t<p class=\"mt-1.5 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\twhen voting closes we tally it. top 3 split the pot. then a fresh round starts from\n\t\t\t\t\t\t\tzero.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<!-- prizes -->\n\t\t\t<section>\n\t\t\t\t<h2 class=\"mb-5 font-display text-2xl font-bold tracking-tight text-text md:text-3xl\">\n\t\t\t\t\t{tiers.length <= 1 ? 'the prize.' : 'the prizes.'}\n\t\t\t\t</h2>\n\t\t\t\t{#if tiers.length === 0}\n\t\t\t\t\t<p class=\"text-[13px] text-muted\">no prize this week — bragging rights only.</p>\n\t\t\t\t{:else}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"grid items-stretch gap-3 md:gap-4 {tiers.length >= 3\n\t\t\t\t\t\t\t? 'grid-cols-3'\n\t\t\t\t\t\t\t: tiers.length === 2\n\t\t\t\t\t\t\t\t? 'grid-cols-2'\n\t\t\t\t\t\t\t\t: 'grid-cols-1'}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{#each tiers as tier, i (i)}\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex flex-col justify-center rounded-xl p-4 text-center md:p-5 {i === 0\n\t\t\t\t\t\t\t\t\t? 'bg-coral'\n\t\t\t\t\t\t\t\t\t: 'border border-border bg-surface'}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\tclass=\"text-[10px] font-semibold tracking-[0.16em] uppercase {i === 0\n\t\t\t\t\t\t\t\t\t\t? 'text-white/70'\n\t\t\t\t\t\t\t\t\t\t: 'text-muted'}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{placeLabel(i)}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t\t<p\n\t\t\t\t\t\t\t\t\tclass=\"mt-1.5 font-display leading-snug font-bold {tier.length > 8\n\t\t\t\t\t\t\t\t\t\t? 'text-sm md:text-base'\n\t\t\t\t\t\t\t\t\t\t: 'text-2xl md:text-4xl'} {i === 0 ? 'text-white' : 'text-text'}\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{tier}\n\t\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</div>\n\t\t\t\t\t<p class=\"mt-3 text-[12px] text-muted/60\">\n\t\t\t\t\t\thanded to the top entries when voting closes — delivered by hand. cash prizes need your\n\t\t\t\t\t\tpayout details in your\n\t\t\t\t\t\t<a href=\"/p?tab=settings\" class=\"text-coral underline\">profile</a>.\n\t\t\t\t\t</p>\n\t\t\t\t{/if}\n\t\t\t</section>\n\n\t\t\t<!-- RAT-388: real-photo / anti-fake warning — prominent, fill not glow -->\n\t\t\t<div class=\"rounded-xl border border-coral/30 bg-coral/[.07] p-5\">\n\t\t\t\t<p class=\"font-display text-base font-bold text-coral\">real photos only.</p>\n\t\t\t\t<p class=\"mt-1.5 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\treal rewards, judged on real bodies. fake, stolen, or AI-generated pics — or anyone else's\n\t\t\t\t\tphoto passed off as yours — get the entry deleted, the payout voided, and the account\n\t\t\t\t\t<span class=\"font-semibold text-text\">permanently banned</span>. see something off<span\n\t\t\t\t\t\tclass=\"text-text\">?</span\n\t\t\t\t\t> report it.\n\t\t\t\t</p>\n\t\t\t</div>\n\n\t\t\t<!-- rules -->\n\t\t\t<section>\n\t\t\t\t<h2 class=\"mb-5 font-display text-2xl font-bold tracking-tight text-text md:text-3xl\">\n\t\t\t\t\tthe rules.\n\t\t\t\t</h2>\n\t\t\t\t<ul class=\"grid grid-cols-1 gap-x-8 gap-y-3 sm:grid-cols-2\">\n\t\t\t\t\t{#each rules as rule (rule)}\n\t\t\t\t\t\t<li class=\"flex items-start gap-2.5 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"mt-0.5 h-4 w-4 shrink-0 text-coral\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"2.5\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M4.5 12.75l6 6 9-13.5\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span>{rule}</span>\n\t\t\t\t\t\t</li>\n\t\t\t\t\t{/each}\n\t\t\t\t</ul>\n\t\t\t</section>\n\n\t\t\t<!-- faq -->\n\t\t\t<section>\n\t\t\t\t<h2 class=\"mb-5 font-display text-2xl font-bold tracking-tight text-text md:text-3xl\">\n\t\t\t\t\tthe fine print.\n\t\t\t\t</h2>\n\t\t\t\t<div class=\"max-w-2xl space-y-4\">\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p class=\"font-display text-[14px] font-bold text-text\">is this actually legal?</p>\n\t\t\t\t\t\t<p class=\"mt-1 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\tyes. it's a skill/popularity contest decided by community votes — not a lottery.\n\t\t\t\t\t\t\tnothing to buy to enter or to win.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p class=\"font-display text-[14px] font-bold text-text\">how do i get paid if i win?</p>\n\t\t\t\t\t\t<p class=\"mt-1 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\tadd your payout method (paypal / wise / crypto) in your profile. we pay the top 3 out\n\t\t\t\t\t\t\tby hand after the week closes.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<p class=\"font-display text-[14px] font-bold text-text\">can i enter more than once?</p>\n\t\t\t\t\t\t<p class=\"mt-1 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\tone entry per week — make it count. you can swap it out before the week ends.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</section>\n\n\t\t\t<p class=\"mt-2 border-t border-border/40 pt-6 text-[11px] leading-relaxed text-muted/20\">\n\t\t\t\ta weekly popularity contest for the one thing you were told to keep to yourself, with real\n\t\t\t\tcash on the line. the least serious, most-watched thing we run. we stopped questioning it;\n\t\t\t\tso should you.\n\t\t\t</p>\n\t\t</div>\n\t{/if}\n</main>\n\n<!-- your entry / enter (sticky) — photo pageant only; the rater board has no entries -->\n{#if contest && !isRater}\n\t<div\n\t\tclass=\"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex flex-col items-center gap-2 px-4 pb-[calc(68px+env(safe-area-inset-bottom,0px)+0.5rem)] md:pb-5\"\n\t>\n\t\t{#if crossPostToast}\n\t\t\t<div\n\t\t\t\tclass=\"pointer-events-auto max-w-[600px] rounded-full border border-orange/30 bg-bg/95 px-4 py-2 text-center text-[12px] font-medium text-orange shadow-lg backdrop-blur\"\n\t\t\t>\n\t\t\t\t{crossPostToast}\n\t\t\t</div>\n\t\t{/if}\n\t\t<div\n\t\t\tclass=\"pointer-events-auto flex w-full max-w-[600px] items-center gap-2 rounded-2xl border border-border bg-surface/95 px-3 py-2.5 shadow-[0_-4px_40px_rgba(0,0,0,0.4)] sm:gap-3 sm:px-4 md:backdrop-blur-xl\"\n\t\t>\n\t\t\t{#if data.myEntry}\n\t\t\t\t<span\n\t\t\t\t\tclass=\"hidden shrink-0 text-[10px] font-semibold tracking-[0.18em] text-muted uppercase sm:block\"\n\t\t\t\t\t>your entry</span\n\t\t\t\t>\n\t\t\t\t<!-- pep-talk text is desktop-only; on mobile the two shimmer buttons fill\n\t\t\t\t     the bar (equal width) with a small share icon after them. -->\n\t\t\t\t<a\n\t\t\t\t\thref=\"/contest/e/{data.myEntry.id}\"\n\t\t\t\t\tclass=\"hidden min-w-0 flex-1 truncate text-[12px] text-muted no-underline transition-colors hover:text-text md:block\"\n\t\t\t\t\t>more shares = more votes — go get them →</a\n\t\t\t\t>\n\t\t\t\t{#if contest?.status === 'live'}\n\t\t\t\t\t<button\n\t\t\t\t\t\tonclick={boostMyEntry}\n\t\t\t\t\t\tdisabled={crossPosting || crossPosted}\n\t\t\t\t\t\taria-label=\"boost your entry into the arena\"\n\t\t\t\t\t\tclass=\"boost-shimmer inline-flex flex-1 items-center justify-center gap-1 rounded-full px-3.5 py-2 text-[12px] font-bold text-white shadow-sm transition-transform hover:-translate-y-0.5 disabled:opacity-70 md:flex-none\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{#if crossPosted}\n\t\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\t\tclass=\"h-3.5 w-3.5\"\n\t\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\t\tstroke-width=\"3\"\n\t\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\t\td=\"M4.5 12.75l6 6 9-13.5\"\n\t\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\tboosted\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<svg class=\"h-3.5 w-3.5\" fill=\"currentColor\" viewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\t><path d=\"M13 2L4.5 13.5H11l-1 8.5L19.5 10H13z\" /></svg\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\tboost\n\t\t\t\t\t\t\t<span class=\"inline-flex items-center gap-0.5\"\n\t\t\t\t\t\t\t\t>{CROSSPOST_COST}<TokenCoin size={11} /></span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</button>\n\t\t\t\t{/if}\n\t\t\t\t<a\n\t\t\t\t\thref=\"/contest/e/{data.myEntry.id}\"\n\t\t\t\t\tclass=\"vote-shimmer inline-flex flex-1 items-center justify-center rounded-full px-3.5 py-2 text-[12px] font-semibold text-white no-underline md:flex-none\"\n\t\t\t\t\t>view who voted</a\n\t\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\tonclick={shareMyEntry}\n\t\t\t\t\taria-label=\"share your entry\"\n\t\t\t\t\tclass=\"shrink-0 rounded-full bg-white/10 p-2 text-muted transition-colors hover:bg-white/15 hover:text-text\"\n\t\t\t\t>\n\t\t\t\t\t<svg\n\t\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<path\n\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\td=\"M7.217 10.907a2.25 2.25 0 100 2.186m0-2.186c.18.324.283.696.283 1.093s-.103.77-.283 1.093m0-2.186l9.566-5.314m-9.566 7.5l9.566 5.314m0 0a2.25 2.25 0 103.935 2.186 2.25 2.25 0 00-3.935-2.186zm0-12.814a2.25 2.25 0 103.933-2.185 2.25 2.25 0 00-3.933 2.185z\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t{:else}\n\t\t\t\t<span\n\t\t\t\t\tclass=\"hidden shrink-0 text-[10px] font-semibold tracking-[0.18em] text-muted uppercase sm:block\"\n\t\t\t\t\t>not in it</span\n\t\t\t\t>\n\t\t\t\t<span class=\"min-w-0 flex-1 truncate text-[12px] text-muted\"\n\t\t\t\t\t>free to enter · one shot per week.</span\n\t\t\t\t>\n\t\t\t\t<a\n\t\t\t\t\thref=\"/contest/enter\"\n\t\t\t\t\tclass=\"shrink-0 rounded-full bg-coral px-4 py-1.5 text-[12px] font-semibold text-white no-underline transition-colors hover:bg-coral-dark\"\n\t\t\t\t\t>enter →</a\n\t\t\t\t>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n{/if}\n\n{#if reportEntryId}\n\t<ReportContentModal\n\t\tbind:open={reportOpen}\n\t\tentityType=\"contest_entry\"\n\t\tentityId={reportEntryId}\n\t\tonclose={() => (reportOpen = false)}\n\t/>\n{/if}\n\n<BuyTokensModal\n\topen={showBuyTokens}\n\tonclose={() => (showBuyTokens = false)}\n\treason={`boosting your entry into the arena costs ${CROSSPOST_COST} tokens.`}\n\tsource=\"contest_crosspost\"\n/>\n\n<style>\n\t.stage-anim {\n\t\ttransition:\n\t\t\ttransform 0.38s ease-out,\n\t\t\topacity 0.38s ease-out;\n\t}\n\t.stage-out-left {\n\t\ttransform: translateX(-115%) rotate(-10deg);\n\t\topacity: 0;\n\t}\n\t.stage-out-right {\n\t\ttransform: translateX(115%) rotate(10deg);\n\t\topacity: 0;\n\t}\n\t/* filled coral pill with a lighter band sweeping across — solid fill, not a\n\t   glow, so it stays within the no-neon rule. Mirrors the duel NEW badge. */\n\t.vote-shimmer {\n\t\tbackground: linear-gradient(\n\t\t\t100deg,\n\t\t\tvar(--color-coral) 0%,\n\t\t\tvar(--color-coral) 40%,\n\t\t\t#ffb3c2 50%,\n\t\t\tvar(--color-coral) 60%,\n\t\t\tvar(--color-coral) 100%\n\t\t);\n\t\tbackground-size: 220% 100%;\n\t\tbackground-position: 120% 0;\n\t\tanimation: vote-shimmer 2.8s ease-in-out infinite;\n\t}\n\t@keyframes vote-shimmer {\n\t\t0% {\n\t\t\tbackground-position: 120% 0;\n\t\t}\n\t\t45%,\n\t\t100% {\n\t\t\tbackground-position: -20% 0;\n\t\t}\n\t}\n\t/* filled orange shimmer — the boost CTA (same motion as the coral view pill). */\n\t.boost-shimmer {\n\t\tbackground: linear-gradient(\n\t\t\t100deg,\n\t\t\tvar(--color-orange) 0%,\n\t\t\tvar(--color-orange) 40%,\n\t\t\t#ffd9a8 50%,\n\t\t\tvar(--color-orange) 60%,\n\t\t\tvar(--color-orange) 100%\n\t\t);\n\t\tbackground-size: 220% 100%;\n\t\tbackground-position: 120% 0;\n\t\tanimation: vote-shimmer 2.8s ease-in-out infinite;\n\t}\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.vote-shimmer,\n\t\t.boost-shimmer {\n\t\t\tanimation: none;\n\t\t\tbackground-position: 0 0;\n\t\t}\n\t}\n</style>\n"],"version":3}