{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4bce-71b1-95d8-4b1190d283a1","file":"BHZUHVds.mjs","mappings":"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","names":["gap","n","$.noop","div","root_2","span","$.sibling","$.child","$.reset","$.template_effect","$0","$.set_text","text","fmt","$.append","$$anchor","$$render","consequent","row","r","pinned","c","$.derived","comp","me","isMe","div_1","root_3","span_1","text_1","a_1","span_2","getAvatarUrl","DuelAvatar","node_1","span_3","node_2","div_2","div_3","a_2","text_2","node_3","UserBadge","span_4","root_4","consequent_1","div_4","i_1","i_2","i_3","i_4","div_5","span_5","b_1","span_6","b_2","span_7","b_3","span_8","b_4","$.first_child","fragment_1","text_6","mins","b_5","fragment_2","text_7","consequent_2","alternate","b_6","fragment_3","text_8","stars","d_1","div_6","div_7","text_9","span_9","root_8","text_10","toPodium","span_10","root_9","$.get","consequent_4","alternate_1","node_8","button","root_10","text_11","voting","votedFor","$.delegated","castVote","live","consequent_5","$.set_attribute","$$props","myRow","totalScored","preview","viewerId","viewerEligible","viewerNick","viewerAvatar","scoring","podium","pack","first","tier1","prizeForRank","$.state","$.proxy","$.user_effect","$.set","voteNote","meNick","showBar","shareMine","shareOrCopy","raterId","withdraw","prev","res","body","invalidateAll","now","iv","countdown","s","d","h","m","total","pct","v","legend","w","i","a","b","groupTone","header","fragment_4","div_8","p_1","span_11","root_11","span_12","root_12","span_13","root_13","consequent_7","alternate_2","h1","node_10","consequent_8","alternate_3","p_2","consequent_9","alternate_4","div_9","div_10","b_7","div_11","b_8","span_14","div_12","b_9","node_12","text_17","consequent_10","alternate_5","span_15","consequent_11","alternate_6","p_3","root_22","consequent_12","div_13","root_23","p_4","p_5","consequent_13","alternate_7","fc","div_14","root_26","div_15","p_6","consequent_15","div_16","div_17","a_3","span_16","node_18","div_18","h2","a_4","div_19","span_17","node_19","node_20","b_10","fragment_12","text_28","consequent_16","div_20","k","$$array","div_21","root_29","b_11","span_18","div_22","i_5","i_6","i_7","i_8","div_23","node_21","a_5","root_30","span_19","node_22","span_20","span_21","span_22","node_23","small","span_23","text_31","text_32","span_24","text_35","text_27","div_24","root_31","isFirst","div_25","root_32","div_26","b_12","text_36","node_24","span_25","root_33","text_37","consequent_18","consequent_19","a_6","span_26","span_27","node_26","span_28","span_29","span_30","node_27","span_31","text_41","d_2","div_27","text_43","div_28","i_9","i_10","i_11","i_12","div_29","span_32","b_13","span_33","b_14","div_30","root_36","button_1","root_37","text_46","d_3","a_7","node_30","consequent_22","text_39","consequent_14","consequent_17","alternate_8","div_31","node_15","section","div_32","h2_1","span_34","consequent_23","alternate_9","$.each","node_32","node_34","node_35","node_36","div_33","span_35","text_50","a_8","node_37","div_34","div_35","a_9","text_51","div_36","consequent_25","alternate_10","consequent_26","p_7","root_45","text_54","consequent_27","p_8","root_46","text_55","consequent_28","aside","div_37","root_47","ul","it","li","root_48","span_36","span_37","span_38","text_56","span_39","small_1","text_58","text_59","$.set_class","text_57","div_38","b_15","b_16","p_9","text_60","text_61","text_62","consequent_29","div_39","root_49","p_10","span_40","text_63","div_40","root_51","node_45","div_41","div_42","div_43","button_2","text_65","text_66","consequent_30","p_11","root_52","a_10","root_53","p_12","root_54","consequent_31","consequent_32","consequent_33","alternate_11","consequent_34","div_44","root_55","div_45","idx","label","div_46","root_57","div_47","text_67","div_48","node_48","div_49","root_58","div_50","div_51","text_68","div_52","root_59","consequent_35","consequent_36","alternate_12","consequent_37","div_53","root_60","consequent_38","div_54","section_1","div_55","p","t","$$array_1","div_56","root_61","div_57","text_70","div_58","p_13","section_2","div_59","div_60","div_61","node_50","div_62","dl","$$array_2","div_63","root_62","dt","dd","div_64","div_65","root_63","node_52","div_66","div_67","span_41","node_53","div_68","text_75","text_76","p_14","root_64","consequent_39","alternate_13","section_3","ul_1","rule","li_1","root_65","span_42","div_69","root_66","div_70","a_11","node_55","span_43","fragment_22","span_44","span_45","root_68","text_80","consequent_40","text_78","span_46","root_69","consequent_41","alternate_14","a_12","button_3","consequent_42","text_14"],"sources":["../../../../../../src/lib/components/contest/RaterContestBoard.svelte"],"sourcesContent":["<script lang=\"ts\">\n\t// Rater of the week — the whole /contest surface for contest.kind = 'rater'.\n\t// Live: header + podium + the chasing pack + the scoring rail. Closed: the\n\t// frozen board (contest.final_board) as a recap plate + full standings.\n\t// Every number on this page comes from the contest_rater_score snapshot;\n\t// nothing is computed here beyond percentages for the composition bars.\n\timport { invalidateAll } from '$app/navigation';\n\timport DuelAvatar from '$lib/components/duel/DuelAvatar.svelte';\n\timport UserBadge from '$lib/components/UserBadge.svelte';\n\timport { getAvatarUrl } from '$lib/avatar';\n\timport { shareOrCopy } from '$lib/share';\n\timport {\n\t\tprizeForRank,\n\t\ttype ContestScoring,\n\t\ttype ContestSummary,\n\t\ttype RaterStandingRow,\n\t\ttype RaterVoteState\n\t} from '$lib/types/contest';\n\n\tlet {\n\t\tcontest,\n\t\trows,\n\t\tmyRow = null,\n\t\tvote,\n\t\teligibleRaters,\n\t\ttotalScored = rows.length,\n\t\tpreview = false,\n\t\tviewerId = null,\n\t\tviewerEligible = false,\n\t\tviewerNick = null,\n\t\tviewerAvatar = null,\n\t\tmode\n\t}: {\n\t\tcontest: ContestSummary;\n\t\trows: RaterStandingRow[];\n\t\tmyRow?: RaterStandingRow | null;\n\t\tvote: RaterVoteState;\n\t\teligibleRaters: number;\n\t\t/** raters with points this week (the visible list may be a slice of them) */\n\t\ttotalScored?: number;\n\t\t/** admin look at a draft week: live layout, voting disabled */\n\t\tpreview?: boolean;\n\t\tviewerId?: string | null;\n\t\t/** the viewer is a rater in this week but has no points (yet) */\n\t\tviewerEligible?: boolean;\n\t\tviewerNick?: string | null;\n\t\tviewerAvatar?: string | null;\n\t\tmode: 'live' | 'closed';\n\t} = $props();\n\n\tconst live = $derived(mode === 'live' && (contest.status === 'live' || preview));\n\tconst scoring = $derived<ContestScoring | null>(contest.scoring);\n\tconst podium = $derived(rows.slice(0, 3));\n\t// live: the podium cards carry the top 3, the list is 4th and down. closed:\n\t// the plate only names the top 3, so the list is the full frozen board.\n\tconst pack = $derived(live ? rows.slice(3) : rows);\n\tconst first = $derived(podium[0] ?? null);\n\tconst tier1 = $derived(prizeForRank(contest.prizeTiers, 1));\n\n\t// ── vote (RAT-117 pattern: local state seeded from data, resynced on reload) ──\n\tlet votedFor = $state<string | null>(vote.raterId);\n\t$effect(() => {\n\t\tvotedFor = vote.raterId;\n\t});\n\tlet voting = $state(false);\n\tlet voteNote = $state<string | null>(null);\n\tconst isMe = (r: RaterStandingRow) => !!viewerId && r.userId === viewerId;\n\t// the viewer's own handle for the sticky bar / links\n\tconst meNick = $derived(myRow?.nickname ?? viewerNick ?? null);\n\tconst showBar = $derived(live && !!meNick && (!!myRow || viewerEligible));\n\tfunction shareMine() {\n\t\tif (!meNick) return;\n\t\tshareOrCopy({\n\t\t\turl: `${location.origin}/contest/${contest.slug}/rater/${encodeURIComponent(meNick)}`,\n\t\t\ttitle: `vote for @${meNick} — rater of the week`,\n\t\t\ttext: `i'm in this week's rater of the week on ratemyd. one vote per member — mine's yours to give.`\n\t\t});\n\t}\n\n\tasync function castVote(raterId: string) {\n\t\tif (!live || voting) return;\n\t\tif (preview) {\n\t\t\tvoteNote = 'admin preview — voting opens when the week goes live.';\n\t\t\tsetTimeout(() => (voteNote = null), 3500);\n\t\t\treturn;\n\t\t}\n\t\tif (!vote.eligible) {\n\t\t\tvoteNote =\n\t\t\t\tvote.reason === 'anon'\n\t\t\t\t\t? 'log in to vote — one vote per member per week.'\n\t\t\t\t\t: `your account needs to be ${scoring?.minAccountAgeDays ?? 5} days old to vote.`;\n\t\t\tsetTimeout(() => (voteNote = null), 3500);\n\t\t\treturn;\n\t\t}\n\t\tconst withdraw = votedFor === raterId;\n\t\tconst prev = votedFor;\n\t\tvotedFor = withdraw ? null : raterId; // instant\n\t\tvoting = true;\n\t\ttry {\n\t\t\tconst res = await fetch('/api/contest/rater-vote', {\n\t\t\t\tmethod: withdraw ? 'DELETE' : 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t\tbody: withdraw ? undefined : JSON.stringify({ raterId })\n\t\t\t});\n\t\t\tif (!res.ok) {\n\t\t\t\tvotedFor = prev;\n\t\t\t\tconst body = await res.json().catch(() => ({}));\n\t\t\t\tvoteNote =\n\t\t\t\t\tbody.error === 'too_new'\n\t\t\t\t\t\t? 'your account is too new to vote this week.'\n\t\t\t\t\t\t: body.error === 'self'\n\t\t\t\t\t\t\t? \"you can't vote for yourself.\"\n\t\t\t\t\t\t\t: 'could not save your vote — try again.';\n\t\t\t\tsetTimeout(() => (voteNote = null), 3500);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tawait invalidateAll(); // the server bumped + re-ranked; pull the real board\n\t\t} finally {\n\t\t\tvoting = false;\n\t\t}\n\t}\n\n\t// ── countdown ──\n\tlet now = $state(Date.now());\n\t$effect(() => {\n\t\tif (!live || !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\treturn d > 0 ? `${d}d ${h}h` : h > 0 ? `${h}h ${String(m).padStart(2, '0')}m` : `${m}m`;\n\t});\n\n\t// ── formatting ──\n\tconst fmt = (n: number) => n.toLocaleString('en-US');\n\tconst mins = (m: number) => {\n\t\tif (m <= 0) return '0m';\n\t\tconst h = Math.floor(m / 60);\n\t\tconst r = m % 60;\n\t\treturn h > 0 ? `${h}h ${String(r).padStart(2, '0')}m` : `${r}m`;\n\t};\n\tconst stars = (r: RaterStandingRow) =>\n\t\tr.breakdown.reviews > 0 ? (r.breakdown.stars / r.breakdown.reviews).toFixed(1) : null;\n\t/** composition bar: paid / crowd / work / vibe as % of the row's points */\n\tconst comp = (r: RaterStandingRow) => {\n\t\tconst total = Math.max(1, r.groups.paid + r.groups.crowd + r.groups.work + r.groups.vibe);\n\t\tconst pct = (v: number) => Math.round((v / total) * 100);\n\t\treturn {\n\t\t\tpaid: pct(r.groups.paid),\n\t\t\tcrowd: pct(r.groups.crowd),\n\t\t\twork: pct(r.groups.work),\n\t\t\tvibe: pct(r.groups.vibe)\n\t\t};\n\t};\n\tconst toPodium = $derived(\n\t\tmyRow && myRow.rank > 3 && podium[2] ? podium[2].points - myRow.points : 0\n\t);\n\n\t// the legend, ordered by weight, grouped by the bar's four tones\n\ttype LegendItem = {\n\t\tgroup: 'crowd' | 'paid' | 'work' | 'vibe';\n\t\tk: string;\n\t\tsub: string;\n\t\tv: number;\n\t\tunit: string;\n\t};\n\tconst legend = $derived.by<LegendItem[]>(() => {\n\t\tconst w = scoring;\n\t\tif (!w) return [];\n\t\treturn [\n\t\t\t{\n\t\t\t\tgroup: 'crowd',\n\t\t\t\tk: 'community vote',\n\t\t\t\tsub: 'one per member per week',\n\t\t\t\tv: w.vote,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{\n\t\t\t\tgroup: 'work',\n\t\t\t\tk: 'rate delivered',\n\t\t\t\tsub: 'a rate you actually finished',\n\t\t\t\tv: w.rate,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{\n\t\t\t\tgroup: 'vibe',\n\t\t\t\tk: 'new follower',\n\t\t\t\tsub: 'first-ever follow, still following',\n\t\t\t\tv: w.follower,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{\n\t\t\t\tgroup: 'paid',\n\t\t\t\tk: 'tip or gift token',\n\t\t\t\tsub: 'tokens sent to you on purpose',\n\t\t\t\tv: w.tipToken,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{\n\t\t\t\tgroup: 'paid',\n\t\t\t\tk: 'token earned',\n\t\t\t\tsub: 'rate price, stage cut, albums, ppv',\n\t\t\t\tv: w.earnedToken,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{\n\t\t\t\tgroup: 'vibe',\n\t\t\t\tk: 'review star',\n\t\t\t\tsub: 'each ★ left on your rating',\n\t\t\t\tv: w.reviewStar,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{\n\t\t\t\tgroup: 'vibe',\n\t\t\t\tk: 'minute on stage',\n\t\t\t\tsub: 'public stage, clock running',\n\t\t\t\tv: w.floorMinute,\n\t\t\t\tunit: 'pts'\n\t\t\t},\n\t\t\t{ group: 'vibe', k: 'minute on cam', sub: 'solo live session', v: w.camMinute, unit: 'pt' }\n\t\t]\n\t\t\t.filter((i) => i.v > 0)\n\t\t\t.sort((a, b) => b.v - a.v) as LegendItem[];\n\t});\n\tconst groupTone: Record<LegendItem['group'], string> = {\n\t\tpaid: 'bg-text',\n\t\tcrowd: 'bg-coral',\n\t\twork: 'bg-coral/45',\n\t\tvibe: 'bg-white/20'\n\t};\n</script>\n\n<!-- ── header ─────────────────────────────────────────────────────────────── -->\n<header class=\"grid grid-cols-1 items-end gap-6 lg:grid-cols-[1fr_auto]\">\n\t<div>\n\t\t<p class=\"text-[11px] font-semibold tracking-[0.3em] text-coral uppercase\">\n\t\t\tweekly contest — week {contest.weekNumber}\n\t\t\t{#if preview}\n\t\t\t\t<span\n\t\t\t\t\tclass=\"ml-2 rounded-full border border-[#333] px-2 py-0.5 text-[10px] tracking-[0.18em] text-muted\"\n\t\t\t\t\t>admin preview · draft</span\n\t\t\t\t>\n\t\t\t{:else if live}\n\t\t\t\t<span class=\"ml-2 inline-flex items-center gap-2\">\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{:else}\n\t\t\t\t<span class=\"ml-2 text-muted\">· closed</span>\n\t\t\t{/if}\n\t\t</p>\n\t\t<h1\n\t\t\tclass=\"mt-2.5 font-display text-[clamp(2.4rem,7vw,4.6rem)] leading-[0.92] font-bold tracking-[-0.045em]\"\n\t\t>\n\t\t\t{#if live}rater of<br />the <span class=\"text-coral\">week.</span>{:else}the judges<br />were\n\t\t\t\t<span class=\"text-coral\">judged.</span>{/if}\n\t\t</h1>\n\t\t<p class=\"mt-4 max-w-[34rem] text-[15px] leading-relaxed text-muted\">\n\t\t\t{#if live}\n\t\t\t\tno photos this week, and no popularity contest. every active rater is in, and the board\n\t\t\t\tcounts what they actually did: <span class=\"text-text\"\n\t\t\t\t\t>what people paid them, who voted for them, how many rates they delivered.</span\n\t\t\t\t> most points at the buzzer takes the prize and the pin.\n\t\t\t{:else}\n\t\t\t\tweek {contest.weekNumber} is a wrap. the board below is frozen exactly as it stood at the buzzer\n\t\t\t\t—\n\t\t\t\t<span class=\"text-text\"\n\t\t\t\t\t>what people paid, who they voted for, how many rates got delivered.</span\n\t\t\t\t>\n\t\t\t{/if}\n\t\t</p>\n\t</div>\n\t<div class=\"grid grid-cols-3 overflow-hidden rounded-2xl border border-border bg-surface\">\n\t\t<div class=\"px-5 py-3.5\">\n\t\t\t<b class=\"block font-display text-[22px] leading-none font-bold tracking-tight tabular-nums\"\n\t\t\t\t>{tier1 ?? '—'}</b\n\t\t\t>\n\t\t\t<span class=\"mt-1.5 block text-[10px] font-semibold tracking-[0.18em] text-muted uppercase\"\n\t\t\t\t>1st prize</span\n\t\t\t>\n\t\t</div>\n\t\t<div class=\"border-l border-border px-5 py-3.5\">\n\t\t\t<b class=\"block font-display text-[22px] leading-none font-bold tracking-tight tabular-nums\"\n\t\t\t\t>{fmt(eligibleRaters)}</b\n\t\t\t>\n\t\t\t<span class=\"mt-1.5 block text-[10px] font-semibold tracking-[0.18em] text-muted uppercase\"\n\t\t\t\t>{live ? 'raters in' : 'raters scored'}</span\n\t\t\t>\n\t\t</div>\n\t\t<div class=\"border-l border-border px-5 py-3.5\">\n\t\t\t<b\n\t\t\t\tclass=\"block font-display text-[22px] leading-none font-bold tracking-tight text-coral tabular-nums\"\n\t\t\t>\n\t\t\t\t{#if live}{countdown ?? '—'}{:else}final{/if}\n\t\t\t</b>\n\t\t\t<span class=\"mt-1.5 block text-[10px] font-semibold tracking-[0.18em] text-muted uppercase\">\n\t\t\t\t{#if live}left{:else}week {contest.weekNumber}{/if}\n\t\t\t</span>\n\t\t</div>\n\t</div>\n</header>\n\n{#if voteNote}\n\t<p class=\"mt-4 text-[12px] font-medium text-coral\">{voteNote}</p>\n{/if}\n\n<!-- ── podium ─────────────────────────────────────────────────────────────── -->\n{#if podium.length === 0}\n\t<div class=\"mt-12 rounded-2xl border border-border bg-surface px-6 py-14 text-center\">\n\t\t<p class=\"font-display text-lg font-bold text-text\">\n\t\t\t{live ? 'nothing on the board yet.' : 'nobody scored this week.'}\n\t\t</p>\n\t\t<p class=\"mt-1.5 text-[13px] text-muted\">\n\t\t\t{#if live}\n\t\t\t\tthe first rate, tip, or vote of the week puts a name up here. refreshes every few minutes.\n\t\t\t{:else}\n\t\t\t\tthe scoring window closed without a single rate, tip, or vote inside it.\n\t\t\t{/if}\n\t\t</p>\n\t</div>\n{:else if !live && first}\n\t<!-- closed: one dark plate, the champion carries it -->\n\t{@const fc = comp(first)}\n\t<div class=\"mt-11 overflow-hidden rounded-[20px] border border-border bg-surface\">\n\t\t<div class=\"flex items-center justify-between border-b border-border px-5.5 py-3.5\">\n\t\t\t<p class=\"text-[11px] font-semibold tracking-[0.3em] text-muted uppercase\">\n\t\t\t\tweek {contest.weekNumber}{#if contest.closedAt}\n\t\t\t\t\t· closed {new Date(contest.closedAt).toLocaleString('en-US', {\n\t\t\t\t\t\tweekday: 'long',\n\t\t\t\t\t\thour: '2-digit',\n\t\t\t\t\t\tminute: '2-digit',\n\t\t\t\t\t\thour12: false\n\t\t\t\t\t})}{/if}\n\t\t\t</p>\n\t\t\t<span\n\t\t\t\tclass=\"rounded-full bg-coral px-2.5 py-1 font-display text-[10px] font-bold tracking-[0.18em] text-white uppercase\"\n\t\t\t\t>final</span\n\t\t\t>\n\t\t</div>\n\t\t<div class=\"grid grid-cols-1 lg:grid-cols-[1.5fr_1fr]\">\n\t\t\t<div\n\t\t\t\tclass=\"grid grid-cols-1 items-center gap-x-6 gap-y-1.5 bg-[radial-gradient(60%_90%_at_0%_0%,rgba(255,77,109,.10),transparent_70%)] px-6 pt-7 pb-6 sm:grid-cols-[auto_1fr]\"\n\t\t\t>\n\t\t\t\t<a\n\t\t\t\t\thref=\"/u/{first.nickname}\"\n\t\t\t\t\tclass=\"row-span-2 inline-grid w-fit place-items-center rounded-full bg-[linear-gradient(155deg,#ffffff,#d9d9d9_45%,#8f8f8f)] p-1 leading-none no-underline\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"grid place-items-center overflow-hidden rounded-full border-[3px] border-surface leading-none\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\t\tnickname={first.nickname}\n\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(first.avatarPath)}\n\t\t\t\t\t\t\tsize={96}\n\t\t\t\t\t\t\tlink={false}\n\t\t\t\t\t\t/>\n\t\t\t\t\t</span>\n\t\t\t\t</a>\n\t\t\t\t<div class=\"min-w-0\">\n\t\t\t\t\t<p class=\"text-[11px] font-semibold tracking-[0.3em] text-coral uppercase\">\n\t\t\t\t\t\trater of the week\n\t\t\t\t\t</p>\n\t\t\t\t\t<h2\n\t\t\t\t\t\tclass=\"mt-1 truncate font-display text-[clamp(2rem,5vw,3.2rem)] leading-[0.95] font-bold tracking-[-0.04em]\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<a href=\"/contest/{contest.slug}/rater/{first.nickname}\" class=\"no-underline\"\n\t\t\t\t\t\t\t>@{first.nickname}</a\n\t\t\t\t\t\t><span class=\"text-coral\">.</span>\n\t\t\t\t\t</h2>\n\t\t\t\t\t<div class=\"mt-2.5 flex items-center gap-2 text-[12px] text-muted\">\n\t\t\t\t\t\t<UserBadge topRater size={16} />\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t>pinned for good{#if first.prizeLabel}\n\t\t\t\t\t\t\t\t· <b class=\"font-semibold text-text\">{first.prizeLabel}</b> handed over by hand{/if}</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"mt-3 flex flex-wrap gap-1.5 sm:col-start-2\">\n\t\t\t\t\t{#each [[fmt(first.points), 'points'], [fmt(first.breakdown.tokens + first.breakdown.tipped), 'tokens'], [fmt(first.breakdown.votes), 'votes'], [fmt(first.breakdown.rates), 'rates'], [`+${fmt(first.breakdown.followers)}`, 'followers'], [mins(first.breakdown.floorMin + first.breakdown.camMin), 'live']] as [v, k] (k)}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"flex min-w-[74px] flex-col rounded-[10px] border border-border bg-surface-2 px-3 py-2\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<b class=\"font-display text-[15px] leading-tight font-bold tabular-nums\">{v}</b>\n\t\t\t\t\t\t\t<span class=\"mt-0.5 text-[9px] font-semibold tracking-[0.16em] text-muted uppercase\"\n\t\t\t\t\t\t\t\t>{k}</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"mt-3 flex h-1.5 max-w-[420px] gap-0.5 overflow-hidden rounded-full sm:col-start-2\"\n\t\t\t\t>\n\t\t\t\t\t<i class=\"block h-full bg-text\" style=\"width:{fc.paid}%\"></i>\n\t\t\t\t\t<i class=\"block h-full bg-coral\" style=\"width:{fc.crowd}%\"></i>\n\t\t\t\t\t<i class=\"block h-full bg-coral/45\" style=\"width:{fc.work}%\"></i>\n\t\t\t\t\t<i class=\"block h-full bg-white/20\" style=\"width:{fc.vibe}%\"></i>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"flex flex-col justify-center gap-2 border-t border-border px-5.5 py-5 lg:border-t-0 lg:border-l\"\n\t\t\t>\n\t\t\t\t{#each podium.slice(1) as r, i (r.userId)}\n\t\t\t\t\t<a\n\t\t\t\t\t\thref=\"/contest/{contest.slug}/rater/{r.nickname}\"\n\t\t\t\t\t\tclass=\"grid grid-cols-[24px_36px_1fr_auto] items-center gap-3 rounded-xl border border-border bg-surface-2 px-3 py-2.5 no-underline transition-colors hover:border-[#3a3a3a]\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"text-center font-display text-[13px] font-bold text-muted tabular-nums\"\n\t\t\t\t\t\t\t>0{i + 2}</span\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\t\tnickname={r.nickname}\n\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(r.avatarPath)}\n\t\t\t\t\t\t\tsize={36}\n\t\t\t\t\t\t\tlink={false}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<span class=\"flex min-w-0 flex-col font-display text-[14px] font-semibold\">\n\t\t\t\t\t\t\t<span class=\"flex items-center gap-1.5\"\n\t\t\t\t\t\t\t\t><span class=\"truncate\">@{r.nickname}</span><UserBadge\n\t\t\t\t\t\t\t\t\trater\n\t\t\t\t\t\t\t\t\tverified={r.isVerified}\n\t\t\t\t\t\t\t\t\ttopRater={r.raterContestWins > 0}\n\t\t\t\t\t\t\t\t\tsize={12}\n\t\t\t\t\t\t\t\t/></span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<small class=\"font-body text-[11px] font-normal text-muted tabular-nums\"\n\t\t\t\t\t\t\t\t>{fmt(r.points)} pts</small\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"font-display text-[15px] font-bold tabular-nums\">{r.prizeLabel ?? ''}</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</a>\n\t\t\t\t{/each}\n\t\t\t\t<span\n\t\t\t\t\tclass=\"mt-1 text-right text-[11px] font-semibold tracking-[0.14em] text-muted uppercase\"\n\t\t\t\t\t>full board · {fmt(rows.length)} raters ↓</span\n\t\t\t\t>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n{:else}\n\t<div class=\"mt-11 grid grid-cols-1 gap-3 md:grid-cols-[1fr_1.15fr_1fr] md:items-end md:gap-3.5\">\n\t\t{#each podium as r, i (r.userId)}\n\t\t\t{@const c = comp(r)}\n\t\t\t{@const isFirst = i === 0}\n\t\t\t<div\n\t\t\t\tclass=\"flex flex-col gap-3.5 rounded-[20px] border p-5 {isFirst\n\t\t\t\t\t? 'border-[#333] bg-[linear-gradient(180deg,#181416_0%,var(--color-surface)_55%)] pt-7 md:order-none'\n\t\t\t\t\t: 'border-border bg-surface'} {i === 1 ? 'md:-order-1' : ''} {isMe(r)\n\t\t\t\t\t? 'ring-1 ring-green/40'\n\t\t\t\t\t: ''}\"\n\t\t\t>\n\t\t\t\t<div class=\"flex items-center justify-between\">\n\t\t\t\t\t<b\n\t\t\t\t\t\tclass=\"font-display text-[12px] font-bold tracking-[0.22em] uppercase {isFirst\n\t\t\t\t\t\t\t? 'text-coral'\n\t\t\t\t\t\t\t: 'text-muted'}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{isFirst ? '1st place' : i === 1 ? '2nd' : '3rd'}\n\t\t\t\t\t</b>\n\t\t\t\t\t{#if r.prizeLabel}\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"rounded-full px-2.5 py-1 font-display text-[12px] font-bold tracking-wide {isFirst\n\t\t\t\t\t\t\t\t? 'bg-coral text-white'\n\t\t\t\t\t\t\t\t: 'bg-surface-2 text-text'}\"\n\t\t\t\t\t\t\t>{r.prizeLabel}{#if isFirst && !live}\n\t\t\t\t\t\t\t\t· pinned{/if}</span\n\t\t\t\t\t\t>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\t\t\t\t<a\n\t\t\t\t\thref=\"/contest/{contest.slug}/rater/{r.nickname}\"\n\t\t\t\t\tclass=\"flex items-center gap-3.5 no-underline\"\n\t\t\t\t>\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"inline-grid shrink-0 place-items-center rounded-full p-[3px] leading-none {isFirst\n\t\t\t\t\t\t\t? 'bg-[linear-gradient(155deg,#ffffff,#d9d9d9_45%,#8f8f8f)]'\n\t\t\t\t\t\t\t: 'bg-[#333]'}\"\n\t\t\t\t\t>\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"grid place-items-center overflow-hidden rounded-full border-[3px] border-surface leading-none\"\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={r.nickname}\n\t\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(r.avatarPath)}\n\t\t\t\t\t\t\t\tsize={isFirst ? 68 : 54}\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</span>\n\t\t\t\t\t</span>\n\t\t\t\t\t<span class=\"min-w-0\">\n\t\t\t\t\t\t<span\n\t\t\t\t\t\t\tclass=\"flex items-center gap-1.5 font-display font-bold tracking-tight {isFirst\n\t\t\t\t\t\t\t\t? 'text-[21px]'\n\t\t\t\t\t\t\t\t: 'text-[17px]'}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"truncate\">@{r.nickname}</span>\n\t\t\t\t\t\t\t<UserBadge\n\t\t\t\t\t\t\t\trater\n\t\t\t\t\t\t\t\tverified={r.isVerified}\n\t\t\t\t\t\t\t\ttopRater={r.raterContestWins > 0}\n\t\t\t\t\t\t\t\tsubscriber={r.isSubscriber}\n\t\t\t\t\t\t\t\tsize={isFirst ? 14 : 13}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<span class=\"mt-0.5 block text-[12px] text-muted tabular-nums\">\n\t\t\t\t\t\t\t{fmt(r.breakdown.rates)} rates{#if stars(r)}\n\t\t\t\t\t\t\t\t· {stars(r)}★{/if} · +{fmt(r.breakdown.followers)} followers\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</span>\n\t\t\t\t</a>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"font-display leading-none font-bold tracking-[-0.03em] tabular-nums {isFirst\n\t\t\t\t\t\t? 'text-[44px] text-coral'\n\t\t\t\t\t\t: 'text-[34px]'}\"\n\t\t\t\t>\n\t\t\t\t\t{fmt(r.points)}<span\n\t\t\t\t\t\tclass=\"ml-1.5 text-[11px] font-semibold tracking-[0.16em] text-muted uppercase\"\n\t\t\t\t\t\t>pts</span\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"flex h-1.5 gap-0.5 overflow-hidden rounded-full\">\n\t\t\t\t\t<i class=\"block h-full bg-text\" style=\"width:{c.paid}%\"></i>\n\t\t\t\t\t<i class=\"block h-full bg-coral\" style=\"width:{c.crowd}%\"></i>\n\t\t\t\t\t<i class=\"block h-full bg-coral/45\" style=\"width:{c.work}%\"></i>\n\t\t\t\t\t<i class=\"block h-full bg-white/20\" style=\"width:{c.vibe}%\"></i>\n\t\t\t\t</div>\n\t\t\t\t<div class=\"flex flex-wrap gap-x-3.5 gap-y-1 text-[12px] text-muted tabular-nums\">\n\t\t\t\t\t<span\n\t\t\t\t\t\t><b class=\"font-semibold text-text\">{fmt(r.breakdown.tokens + r.breakdown.tipped)}</b> tokens</span\n\t\t\t\t\t>\n\t\t\t\t\t<span><b class=\"font-semibold text-text\">{fmt(r.breakdown.votes)}</b> votes</span>\n\t\t\t\t</div>\n\t\t\t\t{#if live}\n\t\t\t\t\t<div class=\"mt-0.5 flex gap-2\">\n\t\t\t\t\t\t{#if !isMe(r)}\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={() => castVote(r.userId)}\n\t\t\t\t\t\t\t\tdisabled={voting}\n\t\t\t\t\t\t\t\tclass=\"flex flex-1 items-center justify-center rounded-xl border px-3.5 py-2.5 font-display text-[12px] font-bold tracking-[0.1em] uppercase transition-colors disabled:opacity-60 {votedFor ===\n\t\t\t\t\t\t\t\tr.userId\n\t\t\t\t\t\t\t\t\t? 'border-coral bg-coral text-white'\n\t\t\t\t\t\t\t\t\t: 'border-[#333] bg-transparent text-text hover:bg-surface-2'}\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{votedFor === r.userId ? 'voted' : 'vote'}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"/u/{r.nickname}\"\n\t\t\t\t\t\t\tclass=\"flex flex-1 items-center justify-center rounded-xl border px-3.5 py-2.5 font-display text-[12px] font-bold tracking-[0.1em] uppercase no-underline transition-colors {isFirst\n\t\t\t\t\t\t\t\t? 'border-green bg-green text-[#05130a] hover:bg-green-dark'\n\t\t\t\t\t\t\t\t: 'border-[#333] text-text hover:bg-surface-2'}\">get rated</a\n\t\t\t\t\t\t>\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/each}\n\t</div>\n{/if}\n\n<!-- ── the pack + rail ────────────────────────────────────────────────────── -->\n<div class=\"mt-12 grid grid-cols-1 gap-10 lg:grid-cols-[1fr_21rem] lg:gap-14\">\n\t<section>\n\t\t<div class=\"mb-2.5 flex items-baseline justify-between gap-3\">\n\t\t\t<h2 class=\"font-display text-xl font-bold tracking-tight\">\n\t\t\t\t{live ? 'chasing the podium' : 'final standings'}\n\t\t\t</h2>\n\t\t\t<span class=\"text-[12px] text-muted\">\n\t\t\t\t{#if live}4th and down · refreshes every few minutes{:else}{rows.length} raters scored{/if}\n\t\t\t</span>\n\t\t</div>\n\n\t\t{#each pack as r (r.userId)}\n\t\t\t{@render row(r, false)}\n\t\t{/each}\n\t\t{#if myRow && !rows.some((r) => r.userId === myRow?.userId)}\n\t\t\t<!-- the viewer scored, but sits below the visible slice: gap, then their row -->\n\t\t\t{@render gap(myRow.rank - (rows.at(-1)?.rank ?? 0) - 1)}\n\t\t\t{@render row(myRow, true)}\n\t\t{:else if !myRow && viewerEligible && viewerNick}\n\t\t\t<!-- the viewer is in this week but unscored: tied at the bottom with\n\t\t\t     everyone else on zero — still gets a numbered row -->\n\t\t\t{@render gap(totalScored - (rows.at(-1)?.rank ?? 0))}\n\t\t\t<div\n\t\t\t\tclass=\"grid grid-cols-[22px_36px_minmax(0,1fr)_auto] items-center gap-2.5 border-b border-l-2 border-border border-l-green py-3 pl-2.5 sm:grid-cols-[32px_44px_minmax(0,1fr)_auto] sm:gap-4 sm:py-4 sm:pl-3\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\tclass=\"text-center font-display text-[13px] font-bold text-green tabular-nums sm:text-[17px]\"\n\t\t\t\t\t>{totalScored + 1}</span\n\t\t\t\t>\n\t\t\t\t<a href=\"/u/{viewerNick}\" class=\"no-underline\">\n\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\tnickname={viewerNick}\n\t\t\t\t\t\tavatarUrl={getAvatarUrl(viewerAvatar)}\n\t\t\t\t\t\tsize={44}\n\t\t\t\t\t\tlink={false}\n\t\t\t\t\t/>\n\t\t\t\t</a>\n\t\t\t\t<div class=\"min-w-0\">\n\t\t\t\t\t<div class=\"flex items-center gap-1.5 font-display text-[14px] font-bold sm:text-[15px]\">\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref=\"/contest/{contest.slug}/rater/{viewerNick}\"\n\t\t\t\t\t\t\tclass=\"truncate no-underline hover:text-coral\">@{viewerNick}</a\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"font-body text-[9px] font-bold tracking-[0.16em] text-green uppercase\"\n\t\t\t\t\t\t\t>you</span\n\t\t\t\t\t\t>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"mt-1 text-[10.5px] text-muted sm:text-[11.5px]\">\n\t\t\t\t\t\t{#if live}tied at the bottom with {fmt(Math.max(0, eligibleRaters - totalScored - 1))} others\n\t\t\t\t\t\t\ton zero. a rate, a tip, or a vote moves you up.{:else}you were in week {contest.weekNumber},\n\t\t\t\t\t\t\tnothing scored.{/if}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"text-right font-display text-[17px] leading-none font-bold tracking-[-0.03em] text-muted/60 tabular-nums sm:text-[22px]\"\n\t\t\t\t>\n\t\t\t\t\t0<span\n\t\t\t\t\t\tclass=\"mt-0.5 block text-[9px] font-semibold tracking-[0.16em] text-muted uppercase sm:mt-1 sm:text-[10px]\"\n\t\t\t\t\t\t>pts</span\n\t\t\t\t\t>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t{/if}\n\t\t{#if pack.length === 0 && podium.length > 0}\n\t\t\t<p class=\"py-8 text-center text-[13px] text-muted\">\n\t\t\t\t{live\n\t\t\t\t\t? 'three names so far. the rest of the field is one rate away.'\n\t\t\t\t\t: 'three raters scored this week.'}\n\t\t\t</p>\n\t\t{/if}\n\t\t{#if live && eligibleRaters > rows.length}\n\t\t\t<p\n\t\t\t\tclass=\"mt-5 rounded-2xl border border-dashed border-[#333] px-4 py-3.5 text-center text-[11px] font-semibold tracking-[0.12em] text-muted uppercase\"\n\t\t\t>\n\t\t\t\t{fmt(eligibleRaters - rows.length)} more raters in, nothing on the board yet\n\t\t\t</p>\n\t\t{/if}\n\t</section>\n\n\t<aside class=\"flex flex-col gap-4\">\n\t\t{#if scoring && legend.length}\n\t\t\t<div class=\"rounded-[18px] border border-border bg-surface p-5.5\">\n\t\t\t\t<h3 class=\"font-display text-[17px] font-bold tracking-tight\">how you score</h3>\n\t\t\t\t<p class=\"mt-0.5 mb-3.5 text-[12px] text-muted\">\n\t\t\t\t\tper unit, this week only. the bar on every rater is these four tones.\n\t\t\t\t</p>\n\t\t\t\t<ul class=\"m-0 list-none p-0\">\n\t\t\t\t\t{#each legend as it, i (it.k)}\n\t\t\t\t\t\t<li\n\t\t\t\t\t\t\tclass=\"grid grid-cols-[10px_1fr_auto] items-center gap-3 py-2.5 {i > 0\n\t\t\t\t\t\t\t\t? 'border-t border-border'\n\t\t\t\t\t\t\t\t: ''}\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"h-2.5 w-2.5 rounded-[3px] {groupTone[it.group]}\"></span>\n\t\t\t\t\t\t\t<span class=\"text-[13px] leading-tight text-text\">\n\t\t\t\t\t\t\t\t{it.k}<span class=\"mt-0.5 block text-[11px] text-muted\">{it.sub}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"font-display text-[15px] font-bold whitespace-nowrap tabular-nums\">\n\t\t\t\t\t\t\t\t{it.v}<small\n\t\t\t\t\t\t\t\t\tclass=\"ml-0.5 font-body text-[10px] font-semibold tracking-[0.1em] text-muted uppercase\"\n\t\t\t\t\t\t\t\t\t>{it.unit}</small\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t</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\t<div class=\"mt-3.5 rounded-xl bg-surface-2 px-3.5 py-3 text-[12px] text-muted\">\n\t\t\t\t\ta 30-token rate is <b class=\"font-semibold text-text tabular-nums\"\n\t\t\t\t\t\t>{scoring.rate} + {30 * scoring.earnedToken} = {scoring.rate + 30 * scoring.earnedToken} pts</b\n\t\t\t\t\t>. a free one is\n\t\t\t\t\t<b class=\"font-semibold text-text\">{scoring.rate}</b>. the money stacks, the clicks don't.\n\t\t\t\t</div>\n\t\t\t\t<p class=\"mt-3 text-[11px] leading-relaxed text-muted/70\">\n\t\t\t\t\tsenders must be {scoring.minAccountAgeDays}+ days old · a follower counts once, ever ·\n\t\t\t\t\tself-rates never count · max {scoring.maxRatesPerPair} rates from the same person · live caps\n\t\t\t\t\tat {mins(scoring.maxLiveMinutesPerDay)} a day.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t{/if}\n\n\t\t{#if live}\n\t\t\t<div class=\"rounded-[18px] border border-border bg-surface p-5.5\">\n\t\t\t\t<h3 class=\"font-display text-[17px] font-bold tracking-tight\">your vote</h3>\n\t\t\t\t<p class=\"mt-1 text-[12.5px] text-muted\">\n\t\t\t\t\tone vote per member per week, worth {scoring?.vote ?? 15} points. move it until the buzzer.\n\t\t\t\t\t<span class=\"text-text\"\n\t\t\t\t\t\t>accounts under {scoring?.minAccountAgeDays ?? 5} days old can't vote</span\n\t\t\t\t\t> — fresh alts don't count here.\n\t\t\t\t</p>\n\t\t\t\t{#if votedFor}\n\t\t\t\t\t{@const v = rows.find((r) => r.userId === votedFor)}\n\t\t\t\t\t{#if v}\n\t\t\t\t\t\t<div\n\t\t\t\t\t\t\tclass=\"mt-3.5 flex items-center gap-3 rounded-2xl border border-border bg-surface-2 px-3.5 py-3\"\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={34}\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<div class=\"min-w-0 flex-1\">\n\t\t\t\t\t\t\t\t<div class=\"truncate font-display text-[14px] font-bold\">@{v.nickname}</div>\n\t\t\t\t\t\t\t\t<div class=\"text-[11px] text-muted\">your vote · #{v.rank} right now</div>\n\t\t\t\t\t\t\t</div>\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={() => castVote(v.userId)}\n\t\t\t\t\t\t\t\tdisabled={voting}\n\t\t\t\t\t\t\t\tclass=\"rounded-full border border-[#333] px-3 py-1.5 font-display text-[10px] font-bold tracking-[0.14em] text-muted uppercase transition-colors hover:text-text disabled:opacity-60\"\n\t\t\t\t\t\t\t\t>withdraw</button\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t{:else if vote.eligible}\n\t\t\t\t\t<p\n\t\t\t\t\t\tclass=\"mt-3.5 rounded-2xl border border-dashed border-[#333] px-3.5 py-3 text-[12px] text-muted\"\n\t\t\t\t\t>\n\t\t\t\t\t\tno vote yet — tap <span class=\"font-display font-bold text-text\">vote</span> on any rater.\n\t\t\t\t\t</p>\n\t\t\t\t{:else if vote.reason === 'anon'}\n\t\t\t\t\t<a\n\t\t\t\t\t\thref=\"/auth/sign-in\"\n\t\t\t\t\t\tclass=\"mt-3.5 block rounded-xl bg-coral py-3 text-center font-display text-[12px] font-bold tracking-[0.1em] text-white uppercase no-underline hover:bg-coral-dark\"\n\t\t\t\t\t\t>log in to vote</a\n\t\t\t\t\t>\n\t\t\t\t{:else}\n\t\t\t\t\t<p\n\t\t\t\t\t\tclass=\"mt-3.5 rounded-2xl border border-dashed border-[#333] px-3.5 py-3 text-[12px] text-muted\"\n\t\t\t\t\t>\n\t\t\t\t\t\tyour account is too new to vote this week. next week you're in.\n\t\t\t\t\t</p>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t{/if}\n\n\t\t{#if contest.prizeTiers.length}\n\t\t\t<div class=\"rounded-[18px] border border-border bg-surface p-5.5\">\n\t\t\t\t<h3 class=\"font-display text-[17px] font-bold tracking-tight\">the prizes</h3>\n\t\t\t\t<div class=\"mt-3.5 grid grid-cols-[1fr_1.3fr_1fr] items-end gap-2\">\n\t\t\t\t\t{#each [1, 0, 2] as idx (idx)}\n\t\t\t\t\t\t{@const label = contest.prizeTiers[idx]}\n\t\t\t\t\t\t{#if idx === 0}\n\t\t\t\t\t\t\t<div class=\"rounded-2xl bg-coral px-2 py-4.5 text-center\">\n\t\t\t\t\t\t\t\t<div class=\"text-[10px] font-semibold tracking-[0.16em] text-white/70 uppercase\">\n\t\t\t\t\t\t\t\t\t1st place\n\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\tclass=\"mt-0.5 font-display text-[22px] leading-tight font-bold tracking-tight text-white\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t{label ?? '—'}\n\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\tclass=\"mt-2 flex items-center justify-center gap-1.5 text-[10px] font-semibold tracking-[0.1em] text-white/85 uppercase\"\n\t\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t\t<UserBadge topRater size={12} /> + the pin\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{:else if label}\n\t\t\t\t\t\t\t<div class=\"rounded-2xl border border-border bg-surface-2 px-2 py-3.5 text-center\">\n\t\t\t\t\t\t\t\t<div class=\"text-[10px] font-semibold tracking-[0.16em] text-muted uppercase\">\n\t\t\t\t\t\t\t\t\t{idx === 1 ? '2nd' : '3rd'}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"mt-0.5 font-display text-[18px] leading-tight font-bold tracking-tight\">\n\t\t\t\t\t\t\t\t\t{label}\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{:else}\n\t\t\t\t\t\t\t<div></div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{/each}\n\t\t\t\t</div>\n\t\t\t\t<p class=\"mt-3 text-[12px] text-muted\">\n\t\t\t\t\thanded over by hand, like always. the pin stays on the winner's profile for good.\n\t\t\t\t</p>\n\t\t\t</div>\n\t\t{/if}\n\n\t\t{#if live}\n\t\t\t<div class=\"rounded-[18px] border border-border bg-surface p-5.5\">\n\t\t\t\t<h3 class=\"font-display text-[17px] font-bold tracking-tight\">not a rater?</h3>\n\t\t\t\t<p class=\"mt-1 text-[12.5px] text-muted\">\n\t\t\t\t\tevery rate you buy and every token you tip this week moves this board. pick one, get\n\t\t\t\t\tjudged, push them up.\n\t\t\t\t</p>\n\t\t\t\t<a\n\t\t\t\t\thref=\"/r\"\n\t\t\t\t\tclass=\"mt-3.5 block rounded-xl bg-green py-3 text-center font-display text-[12px] font-bold tracking-[0.1em] text-[#05130a] uppercase no-underline hover:bg-green-dark\"\n\t\t\t\t\t>browse raters →</a\n\t\t\t\t>\n\t\t\t</div>\n\t\t{/if}\n\t</aside>\n</div>\n\n<!-- ── lower ──────────────────────────────────────────────────────────────── -->\n<div class=\"mt-24 grid gap-16 border-t border-border pt-14\">\n\t<section>\n\t\t<h2 class=\"font-display text-[clamp(1.6rem,3vw,2.1rem)] font-bold tracking-tight\">\n\t\t\twhat even is this.\n\t\t</h2>\n\t\t<p class=\"mt-3.5 max-w-[40rem] text-[15px] leading-relaxed text-muted\">\n\t\t\tthe weekly contest, flipped. instead of judging bodies, we're judging the judges. the raters\n\t\t\twho put in the work — clearing their queue, showing up on stage, getting paid and getting\n\t\t\treviewed well — climb the board. <span class=\"text-text\"\n\t\t\t\t>no entering, no uploading, no campaigning.</span\n\t\t\t> just do the job and the board notices.\n\t\t</p>\n\t</section>\n\n\t<section>\n\t\t<h2 class=\"mb-4 font-display text-[clamp(1.6rem,3vw,2.1rem)] font-bold tracking-tight\">\n\t\t\thow it works.\n\t\t</h2>\n\t\t<div class=\"grid grid-cols-1 gap-3.5 sm:grid-cols-3\">\n\t\t\t{#each [['every rater is in', 'active raters are on the board automatically. nothing to submit, nothing to upload.'], ['the week scores you', 'money, votes, rates, community — each worth a fixed number of points. the legend is the whole formula, nothing hidden.'], ['the buzzer locks it in', 'top 3 take the prizes. #1 gets the pin. then everyone starts from zero.']] as [t, p], i (t)}\n\t\t\t\t<div class=\"rounded-[18px] border border-border bg-surface p-5.5\">\n\t\t\t\t\t<div\n\t\t\t\t\t\tclass=\"mb-3.5 inline-grid h-[34px] w-[34px] place-items-center rounded-[10px] bg-coral font-display font-bold text-white\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{i + 1}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div class=\"mb-1.5 font-display text-base font-bold\">{t}</div>\n\t\t\t\t\t<p class=\"text-[13px] leading-relaxed text-muted\">{p}</p>\n\t\t\t\t</div>\n\t\t\t{/each}\n\t\t</div>\n\t</section>\n\n\t<section>\n\t\t<h2 class=\"font-display text-[clamp(1.6rem,3vw,2.1rem)] font-bold tracking-tight\">the pin.</h2>\n\t\t<p class=\"mt-3.5 max-w-[40rem] text-[15px] leading-relaxed text-muted\">\n\t\t\tplatinum, because it's the one thing on the site you can't buy. it sits next to the name\n\t\t\teverywhere the name shows, and it never comes off.\n\t\t</p>\n\t\t<div class=\"mt-6 grid grid-cols-1 gap-4 md:grid-cols-[19rem_1fr] md:items-start\">\n\t\t\t<div\n\t\t\t\tclass=\"flex flex-col gap-5 rounded-[20px] border border-[#333] bg-[linear-gradient(180deg,#1a1a1a_0%,var(--color-surface)_60%)] p-6\"\n\t\t\t>\n\t\t\t\t<div\n\t\t\t\t\tclass=\"grid h-[150px] place-items-center rounded-2xl border border-border bg-[radial-gradient(70%_80%_at_50%_40%,#232323,var(--color-bg)_100%)]\"\n\t\t\t\t>\n\t\t\t\t\t<UserBadge topRater size={72} />\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<p class=\"text-[11px] font-semibold tracking-[0.3em] text-muted uppercase\">\n\t\t\t\t\t\tbadge · platinum\n\t\t\t\t\t</p>\n\t\t\t\t\t<h3 class=\"mt-2 mb-4 font-display text-[30px] leading-[0.95] font-bold tracking-tight\">\n\t\t\t\t\t\trater of<br />the week\n\t\t\t\t\t</h3>\n\t\t\t\t\t<dl class=\"m-0 grid gap-2\">\n\t\t\t\t\t\t{#each [['earned by', '#1 on the board when the week closes'], ['stacks', 'win again and the count goes up — ×2, ×3'], ['shows', 'profile, rater cards, feed, chat, live'], ['expires', 'never']] as [k, v] (k)}\n\t\t\t\t\t\t\t<div class=\"grid grid-cols-[72px_1fr] gap-2.5 text-[12.5px]\">\n\t\t\t\t\t\t\t\t<dt class=\"pt-0.5 text-[10px] font-semibold tracking-[0.16em] text-muted uppercase\">\n\t\t\t\t\t\t\t\t\t{k}\n\t\t\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t\t\t<dd class=\"m-0 text-text\">{v}</dd>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t</dl>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t\t<div class=\"rounded-[18px] border border-border bg-surface p-5\">\n\t\t\t\t<div class=\"mb-3 text-[10px] font-semibold tracking-[0.2em] text-muted uppercase\">\n\t\t\t\t\ton a profile\n\t\t\t\t</div>\n\t\t\t\t{#if first}\n\t\t\t\t\t<div class=\"flex items-center gap-3.5\">\n\t\t\t\t\t\t<DuelAvatar\n\t\t\t\t\t\t\tnickname={first.nickname}\n\t\t\t\t\t\t\tavatarUrl={getAvatarUrl(first.avatarPath)}\n\t\t\t\t\t\t\tsize={56}\n\t\t\t\t\t\t\tlink={false}\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<div class=\"min-w-0\">\n\t\t\t\t\t\t\t<div\n\t\t\t\t\t\t\t\tclass=\"flex items-center gap-1.5 font-display text-[19px] font-bold tracking-tight\"\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t<span class=\"truncate\">{first.nickname}</span>\n\t\t\t\t\t\t\t\t<UserBadge\n\t\t\t\t\t\t\t\t\trater\n\t\t\t\t\t\t\t\t\tverified={first.isVerified}\n\t\t\t\t\t\t\t\t\ttopRater\n\t\t\t\t\t\t\t\t\tsubscriber={first.isSubscriber}\n\t\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"text-[12px] text-muted\">\n\t\t\t\t\t\t\t\t{live\n\t\t\t\t\t\t\t\t\t? 'how it looks if the lead holds'\n\t\t\t\t\t\t\t\t\t: `rater of the week · week ${contest.weekNumber}`}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t{:else}\n\t\t\t\t\t<p class=\"text-[13px] text-muted\">\n\t\t\t\t\t\tthe crown lands next to the winner's name — right after verified, before pro.\n\t\t\t\t\t</p>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t</section>\n\n\t<section>\n\t\t<h2 class=\"mb-4 font-display text-[clamp(1.6rem,3vw,2.1rem)] font-bold tracking-tight\">\n\t\t\tthe rules.\n\t\t</h2>\n\t\t<ul class=\"grid grid-cols-1 gap-x-8 gap-y-2.5 sm:grid-cols-2\">\n\t\t\t{#each ['active raters only. nothing to enter, nothing to pay.', 'only activity inside the week counts. the clock is the clock.', 'points come from the legend and nothing else. no likes, no AI.', `one vote per member per week. accounts under ${scoring?.minAccountAgeDays ?? 5} days old can't vote.`, 'self-rating, alt accounts, or farming your own queue voids the week and the rater status.', 'ties go to whoever earned more tokens.', 'top 3 get the prizes, handed over by hand. the pin is #1 only and never comes off.'] as rule (rule)}\n\t\t\t\t<li class=\"flex gap-2.5 text-[13px] leading-relaxed text-muted\">\n\t\t\t\t\t<span class=\"shrink-0 font-bold text-coral\">✓</span><span>{rule}</span>\n\t\t\t\t</li>\n\t\t\t{/each}\n\t\t</ul>\n\t</section>\n</div>\n\n{#snippet gap(n: number)}\n\t{#if n > 0}\n\t\t<div\n\t\t\tclass=\"flex items-center gap-3 py-2.5 text-[10px] font-semibold tracking-[0.18em] text-muted/60 uppercase\"\n\t\t>\n\t\t\t<span class=\"h-px flex-1 bg-border\"></span>\n\t\t\t<span>{fmt(n)} raters between</span>\n\t\t\t<span class=\"h-px flex-1 bg-border\"></span>\n\t\t</div>\n\t{/if}\n{/snippet}\n\n{#snippet row(r: RaterStandingRow, pinned: boolean)}\n\t{@const c = comp(r)}\n\t{@const me = isMe(r)}\n\t<div\n\t\tclass=\"grid grid-cols-[22px_36px_minmax(0,1fr)_auto] items-center gap-2.5 border-b border-border py-3 sm:grid-cols-[32px_44px_minmax(0,1fr)_auto] sm:gap-4 sm:py-4 {me\n\t\t\t? 'border-l-2 border-l-green pl-2.5 sm:pl-3'\n\t\t\t: 'hover:bg-white/[.015]'} {pinned ? '' : ''}\"\n\t>\n\t\t<span\n\t\t\tclass=\"text-center font-display text-[13px] font-bold tracking-tight text-muted/60 tabular-nums sm:text-[17px]\"\n\t\t\t>{r.rank}</span\n\t\t>\n\t\t<a href=\"/u/{r.nickname}\" class=\"no-underline\">\n\t\t\t<span class=\"block sm:hidden\">\n\t\t\t\t<DuelAvatar\n\t\t\t\t\tnickname={r.nickname}\n\t\t\t\t\tavatarUrl={getAvatarUrl(r.avatarPath)}\n\t\t\t\t\tsize={36}\n\t\t\t\t\tlink={false}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t\t<span class=\"hidden sm:block\">\n\t\t\t\t<DuelAvatar\n\t\t\t\t\tnickname={r.nickname}\n\t\t\t\t\tavatarUrl={getAvatarUrl(r.avatarPath)}\n\t\t\t\t\tsize={44}\n\t\t\t\t\tlink={false}\n\t\t\t\t/>\n\t\t\t</span>\n\t\t</a>\n\t\t<div class=\"min-w-0\">\n\t\t\t<div class=\"flex items-center gap-1.5 font-display text-[14px] font-bold sm:text-[15px]\">\n\t\t\t\t<a\n\t\t\t\t\thref=\"/contest/{contest.slug}/rater/{r.nickname}\"\n\t\t\t\t\tclass=\"truncate no-underline hover:text-coral\">@{r.nickname}</a\n\t\t\t\t>\n\t\t\t\t<UserBadge\n\t\t\t\t\trater\n\t\t\t\t\tverified={r.isVerified}\n\t\t\t\t\ttopRater={r.raterContestWins > 0}\n\t\t\t\t\tsubscriber={r.isSubscriber}\n\t\t\t\t\tsize={12}\n\t\t\t\t/>\n\t\t\t\t{#if me}<span class=\"font-body text-[9px] font-bold tracking-[0.16em] text-green uppercase\"\n\t\t\t\t\t\t>you</span\n\t\t\t\t\t>{/if}\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"mt-1.5 flex h-[4px] max-w-[420px] gap-0.5 overflow-hidden rounded-full sm:mt-2 sm:h-[5px]\"\n\t\t\t>\n\t\t\t\t<i class=\"block h-full bg-text\" style=\"width:{c.paid}%\"></i>\n\t\t\t\t<i class=\"block h-full bg-coral\" style=\"width:{c.crowd}%\"></i>\n\t\t\t\t<i class=\"block h-full bg-coral/45\" style=\"width:{c.work}%\"></i>\n\t\t\t\t<i class=\"block h-full bg-white/20\" style=\"width:{c.vibe}%\"></i>\n\t\t\t</div>\n\t\t\t<div\n\t\t\t\tclass=\"mt-1 flex flex-wrap gap-x-2.5 gap-y-0.5 text-[10.5px] text-muted tabular-nums sm:mt-1.5 sm:gap-x-3.5 sm:text-[11.5px]\"\n\t\t\t>\n\t\t\t\t<span\n\t\t\t\t\t><b class=\"font-semibold text-text\">{fmt(r.breakdown.tokens + r.breakdown.tipped)}</b> tokens</span\n\t\t\t\t>\n\t\t\t\t<span><b class=\"font-semibold text-text\">{fmt(r.breakdown.votes)}</b> votes</span>\n\t\t\t\t<span><b class=\"font-semibold text-text\">{fmt(r.breakdown.rates)}</b> rates</span>\n\t\t\t\t<span class=\"hidden sm:inline\">\n\t\t\t\t\t{#if r.breakdown.floorMin > 0}<b class=\"font-semibold text-text\"\n\t\t\t\t\t\t\t>{mins(r.breakdown.floorMin)}</b\n\t\t\t\t\t\t> on stage{:else}<b class=\"font-semibold text-text\">+{fmt(r.breakdown.followers)}</b> followers{/if}{#if stars(r)}\n\t\t\t\t\t\t· <b class=\"font-semibold text-text\">{stars(r)}★</b>{/if}\n\t\t\t\t</span>\n\t\t\t</div>\n\t\t</div>\n\t\t<div class=\"flex flex-col items-end gap-1.5 sm:flex-row sm:items-center sm:gap-4\">\n\t\t\t<div\n\t\t\t\tclass=\"text-right font-display text-[17px] leading-none font-bold tracking-[-0.03em] tabular-nums sm:text-[22px]\"\n\t\t\t>\n\t\t\t\t{fmt(r.points)}\n\t\t\t\t{#if me && toPodium > 0}\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mt-1 hidden font-body text-[11px] font-medium tracking-normal text-muted normal-case sm:block\"\n\t\t\t\t\t\t>{fmt(toPodium)} to the podium</span\n\t\t\t\t\t>\n\t\t\t\t{:else}\n\t\t\t\t\t<span\n\t\t\t\t\t\tclass=\"mt-0.5 block text-[9px] font-semibold tracking-[0.16em] text-muted uppercase sm:mt-1 sm:text-[10px]\"\n\t\t\t\t\t\t>pts</span\n\t\t\t\t\t>\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t\t{#if live && !me}\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tonclick={() => castVote(r.userId)}\n\t\t\t\t\tdisabled={voting}\n\t\t\t\t\tclass=\"rounded-full border px-2.5 py-1 font-display text-[10px] font-bold tracking-[0.14em] whitespace-nowrap uppercase transition-colors disabled:opacity-60 sm:px-3.5 sm:py-2 sm:text-[11px] {votedFor ===\n\t\t\t\t\tr.userId\n\t\t\t\t\t\t? 'border-coral bg-coral text-white'\n\t\t\t\t\t\t: 'border-[#333] text-text hover:bg-surface-2'}\"\n\t\t\t\t>\n\t\t\t\t\t{votedFor === r.userId ? 'voted' : 'vote'}\n\t\t\t\t</button>\n\t\t\t{/if}\n\t\t</div>\n\t</div>\n{/snippet}\n\n<!-- your standing, always in reach (live weeks, raters only) -->\n{#if showBar && meNick}\n\t<div\n\t\tclass=\"pointer-events-none fixed inset-x-0 bottom-0 z-40 flex justify-center px-4 pb-[calc(68px+env(safe-area-inset-bottom,0px)+0.5rem)] md:pb-5\"\n\t>\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<span\n\t\t\t\tclass=\"hidden shrink-0 text-[10px] font-semibold tracking-[0.18em] text-muted uppercase sm:block\"\n\t\t\t\t>you</span\n\t\t\t>\n\t\t\t<a\n\t\t\t\thref=\"/contest/{contest.slug}/rater/{meNick}\"\n\t\t\t\tclass=\"hidden min-w-0 flex-1 items-baseline gap-2 no-underline sm:flex\"\n\t\t\t>\n\t\t\t\t{#if myRow}\n\t\t\t\t\t<span class=\"font-display text-[15px] font-bold tabular-nums\">#{myRow.rank}</span>\n\t\t\t\t\t<span class=\"font-display text-[13px] font-bold text-muted tabular-nums\"\n\t\t\t\t\t\t>{fmt(myRow.points)}\n\t\t\t\t\t\t<span class=\"text-[10px] tracking-[0.14em] uppercase\">pts</span></span\n\t\t\t\t\t>\n\t\t\t\t\t{#if toPodium > 0}<span class=\"hidden truncate text-[12px] text-muted md:inline\"\n\t\t\t\t\t\t\t>· {fmt(toPodium)} to the podium</span\n\t\t\t\t\t\t>{/if}\n\t\t\t\t{:else}\n\t\t\t\t\t<span class=\"truncate text-[12px] text-muted\"\n\t\t\t\t\t\t>in this week · nothing on the board yet</span\n\t\t\t\t\t>\n\t\t\t\t{/if}\n\t\t\t</a>\n\t\t\t<a\n\t\t\t\thref=\"/contest/{contest.slug}/rater/{meNick}\"\n\t\t\t\tclass=\"flex shrink-0 items-center justify-center rounded-full border border-[#333] px-3.5 py-2 font-display text-[11px] font-bold tracking-[0.12em] text-text uppercase no-underline transition-colors hover:bg-surface-2\"\n\t\t\t\t>your page</a\n\t\t\t>\n\t\t\t<button\n\t\t\t\ttype=\"button\"\n\t\t\t\tonclick={shareMine}\n\t\t\t\tclass=\"vote-shimmer inline-flex flex-1 items-center justify-center gap-1.5 rounded-full px-4 py-2 font-display text-[11px] font-bold tracking-[0.12em] whitespace-nowrap text-white uppercase sm:flex-none\"\n\t\t\t>\n\t\t\t\t<svg\n\t\t\t\t\tclass=\"h-3.5 w-3.5\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\t>\n\t\t\t\t\t<path\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\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/>\n\t\t\t\t</svg>\n\t\t\t\t<span class=\"sm:hidden\">share</span><span class=\"hidden sm:inline\">share for votes</span>\n\t\t\t</button>\n\t\t</div>\n\t</div>\n{/if}\n\n<style>\n\t/* filled coral pill with a lighter band sweeping across — solid fill, not a\n\t   glow (same motion as the photo contest's view-votes pill). */\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@media (prefers-reduced-motion: reduce) {\n\t\t.vote-shimmer {\n\t\t\tanimation: none;\n\t\t\tbackground-position: 0 0;\n\t\t}\n\t}\n</style>\n"],"version":3}