{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4d08-7862-be52-6b6f1c29c295","file":"81.BGeXHK0_.mjs","mappings":"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","names":["unlocked","$.derived","$$props","voters","expanded","$.state","loading","buyOpen","err","signInHref","count","$.get","unlock","goto","$.set","res","j","section","$.first_child","fragment","div","span","p","root_1","button","$.sibling","fragment_1","node_1","$.child","TokenCoin","$$render","consequent_1","alternate","consequent_2","$.reset","node_3","p_1","root_6","consequent_3","$.template_effect","$.delegated","button_1","root_7","text_5","$.append","$$anchor","ul","root_8","v","li","root_10","a","node_5","getAvatarUrl","DuelAvatar","span_1","$.set_attribute","$0","$.set_text","text_6","li_1","root_11","node_6","consequent_6","alternate_1","consequent","alternate_2","consequent_5","consequent_4","BuyTokensModal","node_7","d","ownerHref","fmt","n","likes","$.proxy","voted","voting","total","approval","vote","dir","copied","reportOpen","CROSSPOST_COST","crossPosting","crossPosted","crossPostMsg","showBuyTokens","crossPost","body","share","shareOrCopy","contestEntryShareUrl","CONTEST_SHARE_TITLE","contestShareText","main","root","text","div_1","div_2","node","video","img","root_2","div_3","root_3","text_1","div_4","div_5","node_2","div_6","a_1","root_4","text_2","h1","root_5","text_3","text_4","div_7","div_8","div_9","p_2","p_3","div_10","p_4","text_9","div_11","div_12","div_13","div_14","div_15","span_2","$.set_style","div_16","div_17","root_9","node_8","node_9","node_10","span_3","root_15","consequent_8","alternate_3","node_12","p_5","root_16","consequent_9","consequent_10","p_6","root_17","p_7","root_18","span_4","root_19","div_18","root_20","button_2","button_3","consequent_11","consequent_12","consequent_14","alternate_4","consequent_13","button_4","root_21","consequent_15","p_8","root_22","span_5","text_17","consequent_16","ContestVoters","node_15","div_19","ContestComments","node_16","ReportContentModal","node_17","$$value","node_18","text_7","text_8"],"sources":["../../../../../../src/lib/components/contest/ContestVoters.svelte","../../../../../../src/routes/contest/e/[entryId]/+page.svelte"],"sourcesContent":["<script lang=\"ts\">\n\timport DuelAvatar from '$lib/components/duel/DuelAvatar.svelte';\n\timport TokenCoin from '$lib/components/TokenCoin.svelte';\n\timport BuyTokensModal from '$lib/components/BuyTokensModal.svelte';\n\timport { getAvatarUrl } from '$lib/avatar';\n\timport { goto } from '$app/navigation';\n\timport type { ContestVoter } from '$lib/types/contest';\n\n\tinterface Props {\n\t\tentryId: string;\n\t\t/** standings like-count — shown before the roster is loaded. */\n\t\tlikeCount: number;\n\t\tloggedIn: boolean;\n\t\tunlocked: boolean;\n\t\tvoters: ContestVoter[] | null;\n\t\tcost: number;\n\t}\n\tlet {\n\t\tentryId,\n\t\tlikeCount,\n\t\tloggedIn,\n\t\tunlocked: unlockedInit,\n\t\tvoters: votersInit,\n\t\tcost\n\t}: Props = $props();\n\n\t// Writable $derived: seeds from the server prop and resyncs whenever the load\n\t// reruns, but a fresh in-page unlock can override it locally (the override\n\t// holds until the prop changes again). Cleaner than $state + $effect.\n\tlet unlocked = $derived(unlockedInit);\n\tlet voters = $derived<ContestVoter[] | null>(votersInit);\n\n\tlet expanded = $state(false);\n\tlet loading = $state(false);\n\tlet buyOpen = $state(false);\n\tlet err = $state('');\n\n\tconst signInHref = $derived(`/auth/sign-in?next=/contest/e/${entryId}`);\n\tconst count = $derived(voters?.length ?? likeCount);\n\n\tasync function unlock() {\n\t\tif (loading) return;\n\t\tif (!loggedIn) {\n\t\t\tgoto(signInHref);\n\t\t\treturn;\n\t\t}\n\t\tloading = true;\n\t\terr = '';\n\t\ttry {\n\t\t\tconst res = await fetch(`/api/contest/e/${entryId}/reveal-voters`, { method: 'POST' });\n\t\t\tif (res.ok) {\n\t\t\t\tconst j = (await res.json()) as { voters: ContestVoter[] };\n\t\t\t\tvoters = j.voters;\n\t\t\t\tunlocked = true;\n\t\t\t\texpanded = true; // reveal immediately after paying\n\t\t\t} else if (res.status === 402) {\n\t\t\t\tbuyOpen = true;\n\t\t\t} else if (res.status === 401) {\n\t\t\t\tgoto(signInHref);\n\t\t\t} else {\n\t\t\t\terr = 'could not unlock — try again';\n\t\t\t}\n\t\t} catch {\n\t\t\terr = 'network error — try again';\n\t\t} finally {\n\t\t\tloading = false;\n\t\t}\n\t}\n</script>\n\n<section class=\"mt-6 rounded-2xl border border-border bg-surface p-4 sm:p-5\">\n\t<div class=\"flex items-center justify-between gap-3\">\n\t\t<h2 class=\"text-[11px] font-semibold tracking-[0.22em] text-text uppercase\">who liked this</h2>\n\t\t<span class=\"font-display text-[13px] font-bold tabular-nums text-text\">{count}</span>\n\t</div>\n\n\t{#if likeCount === 0}\n\t\t<p class=\"mt-3 text-[13px] text-muted\">no likes yet — be the first to vote.</p>\n\t{:else if !unlocked}\n\t\t<!-- locked: unlock with tokens (or sign in first) -->\n\t\t<p class=\"mt-2 text-[13px] leading-relaxed text-muted\">\n\t\t\tsee exactly who voted for this entry.\n\t\t</p>\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tonclick={unlock}\n\t\t\tdisabled={loading}\n\t\t\tclass=\"mt-3 flex w-full items-center justify-center gap-2 rounded-xl bg-coral px-4 py-3 font-display text-[14px] font-bold text-white transition-opacity hover:opacity-90 disabled:opacity-50\"\n\t\t>\n\t\t\t{#if loading}\n\t\t\t\tunlocking…\n\t\t\t{:else if !loggedIn}\n\t\t\t\tsign in to see who liked this\n\t\t\t{:else}\n\t\t\t\t<svg\n\t\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t>\n\t\t\t\t\t<rect x=\"3\" y=\"11\" width=\"18\" height=\"11\" rx=\"2\" />\n\t\t\t\t\t<path d=\"M7 11V7a5 5 0 0 1 10 0v4\" />\n\t\t\t\t</svg>\n\t\t\t\tsee who liked this · <TokenCoin size={15} /> {cost}\n\t\t\t{/if}\n\t\t</button>\n\t\t{#if err}\n\t\t\t<p class=\"mt-2 text-center text-[12px] text-coral\">{err}</p>\n\t\t{/if}\n\t{:else if !expanded}\n\t\t<!-- unlocked but collapsed: a view button reveals the roster -->\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tonclick={() => (expanded = true)}\n\t\t\tclass=\"mt-3 flex w-full items-center justify-center gap-2 rounded-xl border border-border bg-bg px-4 py-3 font-display text-[14px] font-bold text-text transition-colors hover:bg-white/[0.02]\"\n\t\t>\n\t\t\t<svg\n\t\t\t\tclass=\"h-4 w-4\"\n\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\tfill=\"none\"\n\t\t\t\tstroke=\"currentColor\"\n\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\taria-hidden=\"true\"\n\t\t\t>\n\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<circle cx=\"12\" cy=\"12\" r=\"3\" />\n\t\t\t</svg>\n\t\t\tview who liked this ({count})\n\t\t</button>\n\t{:else}\n\t\t<!-- expanded roster: each row links to the voter's profile -->\n\t\t<ul class=\"mt-3 -mb-1 max-h-[340px] divide-y divide-border/60 overflow-y-auto\">\n\t\t\t{#each voters ?? [] as v (v.userId)}\n\t\t\t\t{#if v.nickname}\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"/u/{encodeURIComponent(v.nickname)}\"\n\t\t\t\t\t\t\tclass=\"flex items-center gap-3 py-2.5 no-underline transition-colors hover:bg-white/[0.015]\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\t\t\tnickname={v.nickname}\n\t\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(v.avatarPath)}\n\t\t\t\t\t\t\t\tsize={32}\n\t\t\t\t\t\t\t\tlink={false}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t<span class=\"min-w-0 flex-1 truncate font-display text-[13px] font-semibold text-text\"\n\t\t\t\t\t\t\t\t>{v.nickname}</span\n\t\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 shrink-0 text-muted/50\"\n\t\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\t\tfill=\"none\"\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\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<path d=\"m9 18 6-6-6-6\" />\n\t\t\t\t\t\t\t</svg>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t{:else}\n\t\t\t\t\t<li class=\"flex items-center gap-3 py-2.5\">\n\t\t\t\t\t\t<DuelAvatar nickname={null} size={32} link={false} />\n\t\t\t\t\t\t<span class=\"min-w-0 flex-1 truncate font-display text-[13px] font-semibold text-muted\"\n\t\t\t\t\t\t\t>someone</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</li>\n\t\t\t\t{/if}\n\t\t\t{/each}\n\t\t</ul>\n\t{/if}\n</section>\n\n<BuyTokensModal\n\topen={buyOpen}\n\tonclose={() => (buyOpen = false)}\n\treason={`unlocking who liked this costs ${cost} tokens — even on Pro.`}\n\tsuccessPath=\"/contest/e/{entryId}\"\n\tsource=\"contest_voters\"\n/>\n","<script lang=\"ts\">\n\timport DuelAvatar from '$lib/components/duel/DuelAvatar.svelte';\n\timport { getAvatarUrl } from '$lib/avatar';\n\timport ContestComments from '$lib/components/contest/ContestComments.svelte';\n\timport ContestVoters from '$lib/components/contest/ContestVoters.svelte';\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\n\tlet { data } = $props();\n\tconst d = $derived(data.detail);\n\t// Entry owner's profile link — null for anonymous entrants (no nickname).\n\tconst ownerHref = $derived(d.nickname ? `/u/${encodeURIComponent(d.nickname)}` : null);\n\n\tconst fmt = (n: number) => n.toLocaleString('en-US');\n\n\t// Local vote state — seeded from server, optimistic on click.\n\tlet likes = $state(data.detail.totalLikes);\n\tlet voted = $state(data.detail.hasVoted);\n\tlet voting = $state(false);\n\n\tconst total = $derived(likes + d.totalPasses);\n\tconst approval = $derived(total > 0 ? Math.round((likes / total) * 100) : 0);\n\n\tasync function vote(dir: 'like' | 'pass') {\n\t\tif (voting || voted) return;\n\t\tvoting = true;\n\t\tvoted = true;\n\t\tif (dir === 'like') likes += 1;\n\t\ttry {\n\t\t\tconst res = await fetch('/api/contest/vote', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ entryId: d.entryId, vote: dir })\n\t\t\t});\n\t\t\t// 409 = already voted (treat as voted); other errors → roll back.\n\t\t\tif (!res.ok && res.status !== 409) {\n\t\t\t\tvoted = false;\n\t\t\t\tif (dir === 'like') likes -= 1;\n\t\t\t}\n\t\t} catch {\n\t\t\tvoted = false;\n\t\t\tif (dir === 'like') likes -= 1;\n\t\t} finally {\n\t\t\tvoting = false;\n\t\t}\n\t}\n\n\tlet copied = $state(false);\n\tlet reportOpen = $state(false);\n\n\t// Cross-post: pay 50 tokens to boost this entry into the arena for 24h. Arena\n\t// upvotes there count as contest likes (deduped), and the post auto-clears\n\t// after 24h. Repeatable once the previous boost lapses.\n\tconst CROSSPOST_COST = 50;\n\tlet crossPosting = $state(false);\n\tlet crossPosted = $state(false);\n\tlet crossPostMsg = $state<string | null>(null);\n\tlet showBuyTokens = $state(false);\n\tasync function crossPost() {\n\t\tif (crossPosting || crossPosted) return;\n\t\tif (!confirm(`Boost this entry into the arena for 24h? Costs ${CROSSPOST_COST} tokens.`))\n\t\t\treturn;\n\t\tcrossPosting = true;\n\t\tcrossPostMsg = null;\n\t\ttry {\n\t\t\tconst res = await fetch(`/api/contest/e/${d.entryId}/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\tcrossPostMsg = \"you're live in the arena for 24h — upvotes there count here too.\";\n\t\t\t} else if (res.status === 402) {\n\t\t\t\tcrossPostMsg = 'not enough tokens to boost.';\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\tcrossPostMsg = \"already boosted — you're in the arena right now.\";\n\t\t\t} else {\n\t\t\t\tcrossPostMsg = 'could not boost — try again.';\n\t\t\t}\n\t\t} catch {\n\t\t\tcrossPostMsg = 'network error — try again.';\n\t\t} finally {\n\t\t\tcrossPosting = false;\n\t\t}\n\t}\n\t// RAT-389: native share sheet (app picker) → clipboard fallback. shareOrCopy\n\t// MUST be called synchronously here — iOS drops the user-activation token\n\t// across any await, which would silently kill navigator.share.\n\tfunction share() {\n\t\tshareOrCopy({\n\t\t\turl: contestEntryShareUrl(d.entryId),\n\t\t\ttitle: CONTEST_SHARE_TITLE,\n\t\t\ttext: contestShareText()\n\t\t}).then((res) => {\n\t\t\tif (res === 'copied') {\n\t\t\t\tcopied = true;\n\t\t\t\tsetTimeout(() => (copied = false), 1800);\n\t\t\t}\n\t\t});\n\t}\n</script>\n\n<main class=\"mx-auto max-w-3xl px-5 pt-24 pb-28 md:pt-32\">\n\t<a\n\t\thref=\"/contest/{d.contestSlug}\"\n\t\tclass=\"text-[11px] font-semibold tracking-[0.18em] text-muted uppercase no-underline transition-colors hover:text-text\"\n\t\t>← week {d.weekNumber}</a\n\t>\n\n\t<div class=\"mt-5 grid grid-cols-1 gap-8 md:grid-cols-[20rem_1fr]\">\n\t\t<!-- the photo (always shown in full) -->\n\t\t<div>\n\t\t\t<div\n\t\t\t\tclass=\"relative aspect-[4/5] w-full overflow-hidden rounded-xl border border-border bg-black\"\n\t\t\t>\n\t\t\t\t{#if d.mediaType === 'video'}\n\t\t\t\t\t<video\n\t\t\t\t\t\tsrc={d.imageUrl}\n\t\t\t\t\t\tautoplay\n\t\t\t\t\t\tmuted\n\t\t\t\t\t\tloop\n\t\t\t\t\t\tplaysinline\n\t\t\t\t\t\tclass=\"h-full w-full object-contain\"\n\t\t\t\t\t></video>\n\t\t\t\t{:else}\n\t\t\t\t\t<img src={d.imageUrl} alt={d.displayName} class=\"h-full w-full object-contain\" />\n\t\t\t\t{/if}\n\t\t\t\t{#if d.finalRank && d.finalRank <= 3}\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"absolute top-3 left-3 rounded-md bg-coral px-2.5 py-1 font-display text-[12px] font-bold tracking-wider text-white uppercase\"\n\t\t\t\t\t>\n\t\t\t\t\t\t#{d.finalRank} · winner\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\n\t\t<!-- stats + vote -->\n\t\t<div>\n\t\t\t<div class=\"flex items-center gap-3\">\n\t\t\t\t<DuelAvatar\n\t\t\t\t\tnickname={d.nickname}\n\t\t\t\t\tavatarUrl={getAvatarUrl(d.avatarPath)}\n\t\t\t\t\tsize={44}\n\t\t\t\t\thref={ownerHref}\n\t\t\t\t\tlink={!!ownerHref}\n\t\t\t\t/>\n\t\t\t\t<div class=\"min-w-0\">\n\t\t\t\t\t{#if ownerHref}\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={ownerHref}\n\t\t\t\t\t\t\tclass=\"block truncate font-display text-2xl font-bold tracking-tight text-text no-underline transition-colors hover:text-coral\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{d.displayName}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<h1 class=\"truncate font-display text-2xl font-bold tracking-tight text-text\">\n\t\t\t\t\t\t\t{d.displayName}\n\t\t\t\t\t\t</h1>\n\t\t\t\t\t{/if}\n\t\t\t\t\t{#if d.tagline}<p class=\"truncate text-[13px] text-muted italic\">\"{d.tagline}\"</p>{/if}\n\t\t\t\t</div>\n\t\t\t</div>\n\n\t\t\t<div class=\"mt-6 flex items-end gap-8\">\n\t\t\t\t<div>\n\t\t\t\t\t<p\n\t\t\t\t\t\tclass=\"font-display text-[clamp(2.5rem,9vw,4rem)] leading-none font-bold text-coral tabular-nums\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{fmt(likes)}\n\t\t\t\t\t</p>\n\t\t\t\t\t<p class=\"mt-1 text-[11px] font-semibold tracking-[0.16em] text-muted uppercase\">votes</p>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"pb-1\">\n\t\t\t\t\t<p class=\"font-display text-2xl font-bold text-text tabular-nums\">\n\t\t\t\t\t\t#{d.finalRank ?? d.rank}<span class=\"text-sm font-semibold text-muted\">\n\t\t\t\t\t\t\t/ {d.totalEntries}</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</p>\n\t\t\t\t\t<p class=\"mt-1 text-[11px] font-semibold tracking-[0.16em] text-muted uppercase\">\n\t\t\t\t\t\t{d.contestStatus === 'closed' ? 'final rank' : 'live rank'}\n\t\t\t\t\t</p>\n\t\t\t\t</div>\n\t\t\t\t{#if d.prizeLabel}\n\t\t\t\t\t<div class=\"pb-1\">\n\t\t\t\t\t\t<p\n\t\t\t\t\t\t\tclass=\"font-display font-bold text-coral {d.prizeLabel.length > 6\n\t\t\t\t\t\t\t\t? 'max-w-[11rem] text-sm leading-tight'\n\t\t\t\t\t\t\t\t: 'text-2xl'}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{d.prizeLabel}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<p class=\"mt-1 text-[11px] font-semibold tracking-[0.16em] text-muted uppercase\">\n\t\t\t\t\t\t\tprize\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\n\t\t\t{#if total > 0}\n\t\t\t\t<div class=\"mt-6\">\n\t\t\t\t\t<div class=\"flex h-2 w-full overflow-hidden rounded-full bg-surface-2\">\n\t\t\t\t\t\t<div class=\"h-full bg-green\" style=\"width:{approval}%\"></div>\n\t\t\t\t\t\t<div class=\"h-full bg-coral/60\" style=\"width:{100 - approval}%\"></div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"mt-2 flex items-center justify-between text-[11px]\">\n\t\t\t\t\t\t<span class=\"font-medium text-green\">{approval}% liked · {fmt(likes)}</span>\n\t\t\t\t\t\t<span class=\"text-muted/50\">{fmt(d.totalPasses)} passed</span>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t{/if}\n\n\t\t\t<!-- VOTE / share / state -->\n\t\t\t<div class=\"mt-7\">\n\t\t\t\t{#if d.isOwner}\n\t\t\t\t\t<div class=\"rounded-xl border border-border bg-surface p-4\">\n\t\t\t\t\t\t<p class=\"font-display text-sm font-bold text-text\">this is how you win.</p>\n\t\t\t\t\t\t<p class=\"mt-1 text-[12px] leading-relaxed text-muted\">\n\t\t\t\t\t\t\tvotes don't come to you — you go get them. every share puts you in front of more eyes,\n\t\t\t\t\t\t\tand more eyes means more votes. the winners are just whoever shared the most.\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonclick={share}\n\t\t\t\t\t\t\tclass=\"mt-3 flex w-full items-center justify-center gap-2 rounded-lg bg-coral py-3 font-display text-sm font-bold text-white transition-colors hover:bg-coral-dark\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{#if copied}\n\t\t\t\t\t\t\t\tlink copied — now paste it everywhere\n\t\t\t\t\t\t\t{:else}\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.2\"\n\t\t\t\t\t\t\t\t\t><path\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\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\t\t\t/></svg\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\tshare &amp; get votes\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{#if d.contestStatus === 'live'}\n\t\t\t\t\t\t\t<button\n\t\t\t\t\t\t\t\tonclick={crossPost}\n\t\t\t\t\t\t\t\tdisabled={crossPosting || crossPosted}\n\t\t\t\t\t\t\t\tclass=\"boost-shimmer mt-2.5 flex w-full items-center justify-center gap-2 rounded-lg py-2.5 font-display text-[13px] font-bold text-white shadow-sm transition-transform hover:-translate-y-0.5 disabled:opacity-60\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<svg class=\"h-4 w-4\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"\n\t\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\t>\n\t\t\t\t\t\t\t\t{#if crossPosting}\n\t\t\t\t\t\t\t\t\tboosting…\n\t\t\t\t\t\t\t\t{:else if crossPosted}\n\t\t\t\t\t\t\t\t\tboosted into the arena ✓\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<span class=\"inline-flex items-center gap-1\"\n\t\t\t\t\t\t\t\t\t\t>boost into arena · {CROSSPOST_COST}<TokenCoin size={13} /> / 24h</span\n\t\t\t\t\t\t\t\t\t>\n\t\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{#if crossPostMsg}\n\t\t\t\t\t\t\t\t<p class=\"mt-2 text-center text-[11.5px] leading-snug text-muted\">{crossPostMsg}</p>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</div>\n\t\t\t\t{:else if d.contestStatus !== 'live'}\n\t\t\t\t\t<p class=\"text-[13px] text-muted\">voting for this week is closed.</p>\n\t\t\t\t{:else if !data.currentUserId}\n\t\t\t\t\t<p class=\"text-[13px] text-muted\">\n\t\t\t\t\t\t<a href=\"/auth/sign-in\" class=\"font-semibold text-coral underline\">log in</a> to vote on this\n\t\t\t\t\t\tentry.\n\t\t\t\t\t</p>\n\t\t\t\t{:else if voted}\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"inline-flex items-center gap-1.5 text-[12px] font-semibold tracking-[0.16em] text-green/80 uppercase\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<svg\n\t\t\t\t\t\t\tclass=\"h-3.5 w-3.5\"\n\t\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\t\tstroke-width=\"3\"\n\t\t\t\t\t\t\t><path\n\t\t\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\t\t\td=\"M4.5 12.75l6 6 9-13.5\"\n\t\t\t\t\t\t\t/></svg\n\t\t\t\t\t\t>\n\t\t\t\t\t\tyou voted\n\t\t\t\t\t</span>\n\t\t\t\t{:else}\n\t\t\t\t\t<div class=\"grid grid-cols-2 gap-3\">\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\tonclick={() => vote('pass')}\n\t\t\t\t\t\t\tdisabled={voting}\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-3.5 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={() => vote('like')}\n\t\t\t\t\t\t\tdisabled={voting}\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-3.5 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{/if}\n\t\t\t</div>\n\n\t\t\t{#if !d.isOwner}\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonclick={() => (reportOpen = true)}\n\t\t\t\t\tclass=\"mt-5 block text-[12px] text-muted/60 underline-offset-2 transition-colors hover:text-coral hover:underline\"\n\t\t\t\t\t>report this entry</button\n\t\t\t\t>\n\t\t\t{/if}\n\n\t\t\t{#if d.aiScore != null}\n\t\t\t\t<p class=\"mt-4 text-[12px] text-muted\">\n\t\t\t\t\tAI score: <span class=\"font-display font-bold text-orange\">{d.aiScore} / 10</span>\n\t\t\t\t</p>\n\t\t\t{/if}\n\n\t\t\t<ContestVoters\n\t\t\t\tentryId={d.entryId}\n\t\t\t\tlikeCount={likes}\n\t\t\t\tloggedIn={!!data.currentUserId}\n\t\t\t\tunlocked={data.votersUnlocked}\n\t\t\t\tvoters={data.voters}\n\t\t\t\tcost={data.revealVotersCost}\n\t\t\t/>\n\t\t</div>\n\t</div>\n\n\t<div class=\"mt-12 border-t border-border pt-8\">\n\t\t<ContestComments\n\t\t\tentryId={d.entryId}\n\t\t\tisLoggedIn={!!data.currentUserId}\n\t\t\tcurrentUserId={data.currentUserId}\n\t\t\tinitialComments={data.comments}\n\t\t\tinitialHasMore={data.hasMore}\n\t\t\tcommentCount={data.commentCount}\n\t\t/>\n\t</div>\n\t<ReportContentModal\n\t\tbind:open={reportOpen}\n\t\tentityType=\"contest_entry\"\n\t\tentityId={d.entryId}\n\t\tonclose={() => (reportOpen = false)}\n\t/>\n\n\t<BuyTokensModal\n\t\topen={showBuyTokens}\n\t\tonclose={() => (showBuyTokens = false)}\n\t\treason={`boosting your entry into the arena costs ${CROSSPOST_COST} tokens.`}\n\t\tsource=\"contest_crosspost\"\n\t/>\n</main>\n\n<style>\n\t/* filled orange shimmer for the boost-into-arena CTA */\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: boost-shimmer 2.8s ease-in-out infinite;\n\t}\n\t@keyframes boost-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@media (prefers-reduced-motion: reduce) {\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}