{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4cd6-7d42-8815-5491cae5684c","file":"187.B0YPTZLT.mjs","mappings":"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","names":["p","xpProg","$.derived","personalProgress","$.get","fmtNum","n","LOCALE_INFO","locale","onMount","activeMode","$$props","album","recordAlbumImpression","giftTimer","$.set","giftExpanded","reviews","counts","$.proxy","untrack","$.state","giftOpen","verifyOpen","giftBusy","giftDone","giftError","buyTokensOpen","buyTokensReason","extraPosts","postsHasMore","postsLoading","$.user_effect","allPosts","loadMorePosts","last","res","j","seen","post","extraActivity","activityHasMore","restoredFromSnapshot","hasMore","activityFetched","allActivity","brokenImgs","SvelteSet","activityLoading","loadMoreActivity","offset","item","fresh","snapshot","activeTab","v","target","deadline","tryScroll","sendGift","kind","r","t","GIFT_PRO_TOKEN_COST","closeGift","msgSheetOpen","tributeOpen","tributeBusy","tributeError","chatHref","openMessageSheet","sendTribute","amount","message","goto","body","storyGroup","viewedSet","allStoriesViewed","s","storyViewerOpen","storyViewerKey","storyStartIndex","openStory","firstUnviewed","markStoryViewed","id","tileImgFailed","tileVideoFailed","avatarUrl","getAvatarUrl","profileGate","e","surface","hitSignInGate","nextFromHref","RATER_GATE_DETAIL","ratecardInView","watchRatecard","node","io","entry","coverUrl","getCoverUrl","initial","joinedFmt","presence","diff","m","h","d","showAlbumsTab","relTime","iso","chipLabel","type","modeLabel","mode","chipColorClass","trackProfileView","page","reviewBars","profileLd","jsonLdScript","canonical","$.head","$$anchor","$$render","consequent","div","$.first_child","fragment_2","div_1","img","root_3","$.template_effect","$.set_attribute","consequent_1","div_2","div_3","div_4","albumsTabBtn","button","root_4","span","$.sibling","$.child","$.reset","classes","$0","$.append","div_5","button_1","root_5","node_5","img_1","root_6","span_1","root_7","consequent_2","alternate","span_2","root_8","consequent_3","classes_1","$.set_class","$.delegated","div_6","root_9","img_2","root_10","span_3","root_11","consequent_5","alternate_1","span_4","root_12","consequent_6","consequent_4","alternate_2","div_7","node_4","h1","span_5","span_6","root_13","$.set_text","text_4","consequent_7","span_7","root_14","text_5","consequent_8","AdminBadge","consequent_9","consequent_10","button_2","root_17","$1","consequent_11","UserBadge","node_13","a","root_18","consequent_12","a_1","root_19","ClanEmblem","node_16","span_8","span_9","span_10","root_20","text_8","consequent_13","consequent_14","div_8","root_21","a_2","span_11","span_12","div_9","root_22","span_13","text_11","consequent_15","consequent_16","div_10","node_17","span_14","root_23","text_12","span_15","root_24","span_16","root_25","consequent_18","classes_2","text_13","span_17","root_26","text_14","consequent_19","alternate_3","p_1","root_27","text_15","consequent_20","div_11","root_28","l","linkKindDef","a_3","root_30","ProfileLinkIcon","node_23","span_18","svg","root_31","consequent_21","consequent_22","consequent_23","div_12","root_32","div_13","span_19","span_20","div_14","i_1","consequent_24","div_15","node_25","a_4","span_21","span_22","a_5","span_23","span_24","div_16","root_33","span_25","span_26","a_6","root_34","span_27","fragment_6","span_28","span_29","fragment_7","span_30","consequent_26","alternate_4","consequent_25","alternate_5","a_7","node_26","span_31","fragment_8","span_32","span_33","fragment_9","text_31","consequent_27","alternate_6","div_17","root_39","FollowButton","c","a_8","root_41","consequent_28","alternate_7","button_3","root_42","text_33","a_9","root_43","text_34","consequent_29","alternate_8","ShareButton","node_32","button_4","root_44","text_35","consequent_30","consequent_31","a_10","root_45","span_34","span_35","span_36","root_46","text_37","span_37","root_47","consequent_32","consequent_33","span_38","root_48","span_39","span_40","root_49","text_40","consequent_34","alternate_9","span_41","span_42","$.action","$$node","consequent_35","nav","consequent_36","button_5","node_37","span_43","node_38","button_6","root_51","span_44","classes_4","consequent_37","button_7","span_45","span_46","root_52","text_45","consequent_38","node_40","button_8","root_53","span_47","classes_6","consequent_39","consequent_40","div_18","root_56","p_2","p_3","div_19","fragment_14","a_11","root_58","img_3","root_59","$.event","video","root_60","div_20","root_61","span_48","text_49","div_21","root_62","span_49","text_50","div_22","root_63","svg_1","root_64","svg_2","root_65","consequent_46","alternate_10","d_1","consequent_42","d_2","consequent_43","consequent_44","consequent_45","alternate_11","span_50","root_66","consequent_47","button_9","root_67","consequent_48","consequent_41","alternate_12","consequent_49","div_23","root_69","p_4","p_5","div_24","fragment_16","a_12","root_71","video_1","root_72","d_3","img_4","root_73","$.replay_events","div_25","root_74","span_51","span_52","classes_7","div_26","root_75","consequent_51","d_4","consequent_52","consequent_53","alternate_13","span_53","node_50","button_10","root_76","text_57","consequent_54","consequent_50","alternate_14","consequent_55","div_27","root_77","div_28","fragment_17","div_29","div_30","div_31","div_32","div_33","bar","div_34","root_79","span_54","div_35","div_36","span_55","text_61","styles","$.set_style","div_37","div_38","root_80","div_39","span_56","$.each","_","i","span_57","root_81","classes_8","span_58","p_6","root_82","text_64","consequent_56","div_40","root_83","p_7","p_8","consequent_57","alternate_15","consequent_58","a_13","fragment_19","span_59","span_60","span_61","span_62","div_41","root_86","AlbumCard","consequent_59","div_42","fragment_21","div_43","text_70","div_44","root_90","p_9","p_10","consequent_60","consequent_61","div_45","root_91","p_11","p_12","div_46","root_92","consequent_62","consequent_63","alternate_16","consequent_64","AchievementGrid","consequent_65","text_3","text_19","$2","text_21","$4","classes_3","$5","classes_5","$7","aside","div_47","h3","div_48","span_63","span_64","div_49","root_95","span_65","span_66","consequent_66","div_50","root_96","span_67","span_68","text_81","consequent_67","div_51","root_97","ReportTrigger","node_63","consequent_68","div_52","root_98","h3_1","node_65","av","a_14","root_99","div_53","img_5","root_100","span_69","root_101","text_83","consequent_69","alternate_17","span_70","root_102","consequent_70","div_54","div_55","div_56","consequent_71","span_71","text_84","a_15","consequent_72","div_57","root_104","h3_2","p_13","a_16","a_17","consequent_73","StoryViewer","consequent_74","VerifyModal","invalidateAll","consequent_75","div_58","fragment_29","button_11","span_72","div_59","root_109","div_60","button_12","div_61","root_110","p_14","p_15","button_13","p_16","fragment_30","h3_3","div_62","button_14","span_73","span_74","span_75","span_76","text_101","TokenCoin","consequent_77","alternate_18","button_15","span_77","span_78","span_79","span_80","span_81","text_105","consequent_78","alternate_19","p_17","root_116","consequent_79","consequent_76","alternate_20","consequent_80","BuyTokensModal","node_82","button_16","fragment_35","div_63","p_18","strong","text_107","a_18","span_82","span_83","span_84","button_17","span_85","span_86","span_87","span_88","button_18","text_108","TRIBUTE_REPLY_RATE_COPY","consequent_81","TipSheet","node_85","classes_9","classes_10","consequent_82","$9"],"sources":["../../../../../../src/routes/u/[nickname]/+page.svelte"],"sourcesContent":["<script lang=\"ts\">\n\timport { t, locale, LOCALE_INFO } from '$lib/i18n';\n\timport ProfileLinkIcon from '$lib/components/ProfileLinkIcon.svelte';\n\timport { linkKindDef } from '$lib/profile-links';\n\timport BuyTokensModal from '$lib/components/BuyTokensModal.svelte';\n\timport { onMount, untrack } from 'svelte';\n\timport { SvelteSet } from 'svelte/reactivity';\n\timport { page } from '$app/state';\n\timport { goto, invalidateAll } from '$app/navigation';\n\timport FollowButton from '$lib/components/profile/FollowButton.svelte';\n\timport ShareButton from '$lib/components/profile/ShareButton.svelte';\n\timport ReportTrigger from '$lib/components/ReportTrigger.svelte';\n\timport TokenCoin from '$lib/components/TokenCoin.svelte';\n\timport TipSheet from '$lib/components/TipSheet.svelte';\n\timport { GIFT_PRO_TOKEN_COST, TRIBUTE_REPLY_RATE_COPY } from '$lib/token-packages';\n\timport AlbumCard from '$lib/components/album/AlbumCard.svelte';\n\timport { recordAlbumImpression } from '$lib/album-impressions';\n\timport StoryViewer from '$lib/components/post/StoryViewer.svelte';\n\timport AdminBadge from '$lib/components/AdminBadge.svelte';\n\timport UserBadge from '$lib/components/UserBadge.svelte';\n\timport VerifyModal from '$lib/components/VerifyModal.svelte';\n\timport AchievementGrid from '$lib/components/achievements/AchievementGrid.svelte';\n\timport ClanEmblem from '$lib/components/clan/ClanEmblem.svelte';\n\timport { getAvatarUrl, getCoverUrl } from '$lib/avatar';\n\timport { trackProfileView } from '$lib/analytics';\n\timport { hitSignInGate, nextFromHref, RATER_GATE_DETAIL } from '$lib/contextual-sign-in';\n\timport { activeMode } from '$lib/stores/activeMode';\n\timport { personalProgress } from '$lib/xp';\n\timport { canonical, jsonLdScript } from '$lib/seo';\n\n\timport type { Snapshot } from './$types';\n\n\tlet { data } = $props();\n\tconst p = $derived(data.profile);\n\tconst xpProg = $derived(personalProgress(p.xp));\n\tconst fmtNum = (n: number) => n.toLocaleString(LOCALE_INFO[locale()].hreflang);\n\n\t// RAT-327: indigo chrome accent for the public-profile module (someone\n\t// viewing another user's /u/[nickname] page).\n\tonMount(() => {\n\t\tactiveMode.set('public-profile');\n\t\t// \"Who viewed your profile\" — record the view (best-effort, client-fired so\n\t\t// the page load stays fast). Logged-out + own-profile are skipped.\n\t\tif (data.viewer.isLoggedIn && !data.viewer.isOwn && data.profile.nickname) {\n\t\t\tvoid fetch('/api/profile/view', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ nickname: data.profile.nickname })\n\t\t\t}).catch(() => {});\n\t\t}\n\t\t// RAT-449: profile is a funnel surface where the album lives in a tab, so the\n\t\t// impression is the profile VISIT itself (the reach), not a card-scroll —\n\t\t// count one per album on every non-owner visit. Clicks/unlocks carry src=profile.\n\t\tif (!data.viewer.isOwn) {\n\t\t\tfor (const album of data.albums) recordAlbumImpression(album.id, 'profile');\n\t\t}\n\t\t// Gift FAB: reveal the label after a beat so it animates open from the icon.\n\t\tconst giftTimer = setTimeout(() => (giftExpanded = true), 800);\n\t\treturn () => {\n\t\t\tactiveMode.set(null);\n\t\t\tclearTimeout(giftTimer);\n\t\t};\n\t});\n\tconst reviews = $derived(data.reviews);\n\t// Live follower counts — seed from server, FollowButton callback flips them.\n\t// Untrack the seed so a route-level data refresh (e.g. invalidateAll) doesn't\n\t// rubber-band the optimistic follow toggle back. RAT-117 pattern.\n\tconst counts = $state(untrack(() => ({ ...data.counts })));\n\n\t// Gift: one \"send a gift\" button opens a chooser (Pro plan / tokens).\n\t// Starts collapsed (icon only) and auto-expands to reveal the label.\n\tlet giftExpanded = $state(false);\n\tlet giftOpen = $state(false);\n\tlet verifyOpen = $state(false);\n\tlet giftBusy = $state<'pro' | 'tokens' | null>(null);\n\tlet giftDone = $state<'pro' | 'tokens' | null>(null);\n\tlet giftError = $state('');\n\t// Out of tokens → the site-wide bottom-sheet top-up (same as boost/roleplay),\n\t// not an inline error. The gift chooser stays open underneath so a topped-up\n\t// user lands right back on it.\n\tlet buyTokensOpen = $state(false);\n\tlet buyTokensReason = $state<string | null>(null);\n\n\t// Posts grid: same shape as activity below — page 1 from the load, \"load\n\t// more\" appends older pages from /u/[nickname]/posts (keyset on createdAt).\n\t// Seeded through $effect so invalidateAll resyncs (RAT-117).\n\tlet extraPosts = $state<typeof data.posts>([]);\n\tlet postsHasMore = $state(false);\n\tlet postsLoading = $state(false);\n\t$effect(() => {\n\t\tpostsHasMore = data.postsHasMore;\n\t\textraPosts = [];\n\t});\n\tconst allPosts = $derived([...data.posts, ...extraPosts]);\n\tasync function loadMorePosts() {\n\t\tconst last = allPosts.at(-1);\n\t\tif (postsLoading || !last) return;\n\t\tpostsLoading = true;\n\t\ttry {\n\t\t\tconst res = await fetch(\n\t\t\t\t`/u/${encodeURIComponent(p.nickname)}/posts?before=${encodeURIComponent(last.createdAt)}`\n\t\t\t);\n\t\t\tif (res.ok) {\n\t\t\t\tconst j = (await res.json()) as { items: typeof data.posts; hasMore: boolean };\n\t\t\t\tconst seen = new Set(allPosts.map((post) => post.id));\n\t\t\t\textraPosts = [...extraPosts, ...j.items.filter((post) => !seen.has(post.id))];\n\t\t\t\tpostsHasMore = j.hasMore;\n\t\t\t}\n\t\t} catch {\n\t\t\t/* a failed page just leaves the button — tap again */\n\t\t} finally {\n\t\t\tpostsLoading = false;\n\t\t}\n\t}\n\n\t// Activity grid: server gives page 1 + hasMore; \"load more\" appends via the\n\t// /u/[nickname]/activity endpoint. Seeded through $effect so invalidateAll\n\t// resyncs (RAT-117). brokenImgs guards tiles whose share-image 404s — they\n\t// fall back to the placeholder instead of a broken-image icon.\n\tlet extraActivity = $state<typeof data.activity>([]);\n\tlet activityHasMore = $state(false);\n\t// Guard: a back-nav snapshot restore után az adat-reseed effect ne törölje\n\t// a visszaállított oldalakat (feed-minta).\n\tlet restoredFromSnapshot = false;\n\t$effect(() => {\n\t\tconst hasMore = data.activityHasMore;\n\t\tif (restoredFromSnapshot) {\n\t\t\trestoredFromSnapshot = false;\n\t\t\treturn;\n\t\t}\n\t\textraActivity = [];\n\t\tactivityFetched = data.activity.length;\n\t\tactivityHasMore = hasMore;\n\t});\n\tconst allActivity = $derived([...data.activity, ...extraActivity]);\n\t// Rows the SERVER has handed us, including ones we deduped away. The next\n\t// offset has to come from this, not from what ended up on screen: every\n\t// dropped duplicate would otherwise pull the offset back by one, re-request\n\t// the same boundary row, drop it again, and lose a real row each page — and a\n\t// page that is entirely duplicates wouldn't advance the offset at all,\n\t// leaving \"load more\" clickable forever with nothing ever appearing.\n\tlet activityFetched = $state(0);\n\tconst brokenImgs = new SvelteSet<string>();\n\tlet activityLoading = $state(false);\n\tasync function loadMoreActivity() {\n\t\tif (activityLoading) return;\n\t\tactivityLoading = true;\n\t\ttry {\n\t\t\tconst offset = activityFetched;\n\t\t\tconst res = await fetch(`/u/${encodeURIComponent(p.nickname)}/activity?offset=${offset}`);\n\t\t\tif (res.ok) {\n\t\t\t\tconst j = (await res.json()) as { items: typeof data.activity; hasMore: boolean };\n\t\t\t\tactivityFetched += j.items.length;\n\t\t\t\t// RAT-460 pattern: the server merges five sources and paginates by\n\t\t\t\t// offset, so a row inserted mid-session or two rows sharing a timestamp\n\t\t\t\t// can hand back an item already on screen. Appending blind puts the same\n\t\t\t\t// (item.id) key in the keyed each twice → each_key_duplicate aborts the\n\t\t\t\t// render and tears down the activity grid. Drop dupes before appending.\n\t\t\t\tconst seen = new Set(allActivity.map((item) => item.id));\n\t\t\t\tconst fresh = j.items.filter((item) => !seen.has(item.id));\n\t\t\t\textraActivity = [...extraActivity, ...fresh];\n\t\t\t\tactivityHasMore = j.hasMore;\n\t\t\t}\n\t\t} catch {\n\t\t\t/* a failed page just leaves the button — tap again */\n\t\t} finally {\n\t\t\tactivityLoading = false;\n\t\t}\n\t}\n\n\t// RAT-446 follow-up: exact-position return, mint a feeden — tab + betöltött\n\t// activity-oldalak + scroll vissza back-navkor. A magasság-figyelő időzített\n\t// scroll ugyanaz a minta, mint /f-en (a popstate-restore még kirakás közben\n\t// tüzel, a böngésző ~0-ra clampelné).\n\tinterface ProfileSnapshot {\n\t\tactiveTab: Tab;\n\t\textraActivity: typeof data.activity;\n\t\tactivityHasMore: boolean;\n\t\tscrollY: number;\n\t}\n\texport const snapshot: Snapshot<ProfileSnapshot | null> = {\n\t\tcapture: () => ({\n\t\t\tactiveTab,\n\t\t\textraActivity: $state.snapshot(extraActivity) as typeof data.activity,\n\t\t\tactivityHasMore,\n\t\t\tscrollY: window.scrollY\n\t\t}),\n\t\trestore: (v) => {\n\t\t\tif (!v) return;\n\t\t\tactiveTab = v.activeTab;\n\t\t\textraActivity = v.extraActivity;\n\t\t\tactivityHasMore = v.activityHasMore;\n\t\t\trestoredFromSnapshot = true;\n\t\t\tconst target = v.scrollY;\n\t\t\tif (target > 0) {\n\t\t\t\tconst deadline = Date.now() + 1500;\n\t\t\t\tconst tryScroll = () => {\n\t\t\t\t\tconst tallEnough =\n\t\t\t\t\t\tdocument.documentElement.scrollHeight >= target + window.innerHeight;\n\t\t\t\t\tif (tallEnough || Date.now() > deadline) {\n\t\t\t\t\t\twindow.scrollTo({ top: target, behavior: 'instant' });\n\t\t\t\t\t} else {\n\t\t\t\t\t\tsetTimeout(tryScroll, 40);\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t\ttryScroll();\n\t\t\t}\n\t\t}\n\t};\n\n\tasync function sendGift(kind: 'pro' | 'tokens') {\n\t\tif (giftBusy || giftDone) return;\n\t\tgiftBusy = kind;\n\t\tgiftError = '';\n\t\ttry {\n\t\t\tconst res = await fetch('/api/gift', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({ nickname: data.profile.nickname, kind })\n\t\t\t});\n\t\t\tconst r = await res.json();\n\t\t\tif (r?.ok) giftDone = kind;\n\t\t\telse if (r?.error === 'insufficient_tokens') {\n\t\t\t\tbuyTokensReason = t('you need {n} tokens for this gift', { n: kind === 'pro' ? GIFT_PRO_TOKEN_COST : 30 });\n\t\t\t\tbuyTokensOpen = true;\n\t\t\t} else giftError = t('gift failed');\n\t\t} catch {\n\t\t\tgiftError = t('network error');\n\t\t} finally {\n\t\t\tgiftBusy = null;\n\t\t}\n\t}\n\n\tfunction closeGift() {\n\t\tgiftOpen = false;\n\t\tgiftDone = null;\n\t\tgiftError = '';\n\t}\n\n\t// RAT-462: the profile is where ~76% of conversations start, so the message\n\t// button offers both ways in. Nothing is gated — the plain message is exactly\n\t// what it always was; the tribute is an additive second door.\n\tlet msgSheetOpen = $state(false);\n\tlet tributeOpen = $state(false);\n\tlet tributeBusy = $state(false);\n\tlet tributeError = $state('');\n\n\tconst chatHref = $derived(`/c/${encodeURIComponent(data.profile.nickname ?? '')}?from=profile`);\n\n\tfunction openMessageSheet() {\n\t\tmsgSheetOpen = true;\n\t}\n\n\t/** Send the tribute AND the note in one request, then land in the conversation\n\t *  it just opened. They go together on purpose: a gift with a message gets a\n\t *  reply 94.2% of the time (n=206) against 30.0% bare (n=40), and ~1 in 5\n\t *  gifters never writes the follow-up. Tokens go to the recipient 1:1 — see\n\t *  giftTokens(). */\n\tasync function sendTribute(kind: 'tokens' | 'pro', amount: number, message?: string) {\n\t\tif (tributeBusy) return;\n\t\ttributeBusy = true;\n\t\ttributeError = '';\n\t\ttry {\n\t\t\tconst res = await fetch('/api/gift', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\theaders: { 'Content-Type': 'application/json' },\n\t\t\t\tbody: JSON.stringify({\n\t\t\t\t\tnickname: data.profile.nickname,\n\t\t\t\t\tkind,\n\t\t\t\t\t...(message ? { message } : {}),\n\t\t\t\t\t...(kind === 'tokens' ? { amount, source: 'tip' } : {})\n\t\t\t\t})\n\t\t\t});\n\t\t\tif (res.ok) {\n\t\t\t\ttributeOpen = false;\n\t\t\t\tmsgSheetOpen = false;\n\t\t\t\tawait goto(chatHref);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tconst body = await res.json().catch(() => ({}));\n\t\t\tif (res.status === 402 || body?.error === 'insufficient_tokens') {\n\t\t\t\ttributeOpen = false;\n\t\t\t\tbuyTokensReason = t('you need {n} tokens for this', { n: kind === 'pro' ? GIFT_PRO_TOKEN_COST : amount });\n\t\t\t\tbuyTokensOpen = true;\n\t\t\t\treturn;\n\t\t\t}\n\t\t\ttributeError =\n\t\t\t\tbody?.error === 'cannot_gift_self' ? t(\"you can't tip yourself\") : t('failed — try again');\n\t\t} catch {\n\t\t\ttributeError = t('network error — try again');\n\t\t} finally {\n\t\t\ttributeBusy = false;\n\t\t}\n\t}\n\n\t// Story state. The ring goes accent only when the profile owner has at\n\t// least one un-expired story (server pre-filters expires_at > now). It\n\t// dims to \"all viewed\" once every frame is in viewedSet — mirrors the IG\n\t// pattern. Tap → open StoryViewer; the viewer's onview callback flips\n\t// frames into viewedSet immediately so the ring greys without a refetch.\n\tconst storyGroup = $derived(data.storyGroup);\n\tconst viewedSet = new SvelteSet(untrack(() => data.viewedStoryIds ?? []));\n\tconst allStoriesViewed = $derived.by(() => {\n\t\tif (!storyGroup || storyGroup.stories.length === 0) return false;\n\t\treturn storyGroup.stories.every((s) => viewedSet.has(s.id));\n\t});\n\tlet storyViewerOpen = $state(false);\n\t// Bumped on every open so StoryViewer remounts fresh — it reads start\n\t// indices only at mount, so re-opening without a remount keeps stale state.\n\tlet storyViewerKey = $state(0);\n\tlet storyStartIndex = $state(0);\n\tfunction openStory() {\n\t\tif (!storyGroup || storyGroup.stories.length === 0) return;\n\t\tconst firstUnviewed = storyGroup.stories.findIndex((s) => !viewedSet.has(s.id));\n\t\tstoryStartIndex = firstUnviewed >= 0 ? firstUnviewed : 0;\n\t\tstoryViewerKey++;\n\t\tstoryViewerOpen = true;\n\t}\n\tfunction markStoryViewed(id: string) {\n\t\tviewedSet.add(id);\n\t}\n\n\t// POSTS grid only — the activity grid has its own `brokenImgs` above, and one\n\t// mechanism per grid is enough. A tile's image or clip can fail to load (dead\n\t// signed URL, a decode iOS Safari refuses); these drop it to the next branch\n\t// so the tile ends on the neutral placeholder rather than blank.\n\tconst tileImgFailed = new SvelteSet<string>();\n\tconst tileVideoFailed = new SvelteSet<string>();\n\n\tconst avatarUrl = $derived(getAvatarUrl(p.avatarPath));\n\n\t// RAT-519: signed out, \"message\" and the rate card open the sign-in sheet\n\t// right here — saying what it's for — and land in the DM once they're in.\n\tfunction profileGate(e: MouseEvent, surface: 'profile_message' | 'rater_dm') {\n\t\tif (data.viewer.isLoggedIn) return;\n\t\te.preventDefault();\n\t\thitSignInGate({\n\t\t\tsurface,\n\t\t\tnext: nextFromHref((e.currentTarget as HTMLAnchorElement).getAttribute('href')),\n\t\t\tcontext:\n\t\t\t\tsurface === 'rater_dm'\n\t\t\t\t\t? { title: t('get rated by @{name}', { name: p.nickname }), detail: t(RATER_GATE_DETAIL), imageUrl: avatarUrl }\n\t\t\t\t\t: {\n\t\t\t\t\t\t\ttitle: t('message @{name}', { name: p.nickname }),\n\t\t\t\t\t\t\tdetail: t(\"you'll land right in your chat.\"),\n\t\t\t\t\t\t\timageUrl: avatarUrl\n\t\t\t\t\t\t}\n\t\t});\n\t}\n\n\t// RAT-520: the floating gift pill sat over the rate card on a phone — the\n\t// profile's main action for a rater. It steps aside while the card is on\n\t// screen and comes back once it has scrolled away.\n\tlet ratecardInView = $state(false);\n\tfunction watchRatecard(node: HTMLElement) {\n\t\tif (typeof IntersectionObserver === 'undefined') return;\n\t\tconst io = new IntersectionObserver(([entry]) => (ratecardInView = entry.isIntersecting));\n\t\tio.observe(node);\n\t\treturn {\n\t\t\tdestroy() {\n\t\t\t\tio.disconnect();\n\t\t\t\tratecardInView = false;\n\t\t\t}\n\t\t};\n\t}\n\tconst coverUrl = $derived(getCoverUrl(p.coverPath));\n\tconst initial = $derived((p.nickname?.[0] ?? '?').toUpperCase());\n\n\tconst joinedFmt = $derived(\n\t\tnew Date(p.createdAt).toLocaleDateString(LOCALE_INFO[locale()].hreflang, { month: 'short', year: 'numeric' })\n\t);\n\n\t// RAT-384 presence: in place of the join date, show how long ago this user\n\t// was last active. lastActiveAt bumps on every authenticated page load (no\n\t// heartbeat). We deliberately fall back to the plain \"joined\" line for our\n\t// own profile, never-active users, and anyone dormant for 7+ days — a stale\n\t// \"last seen 3mo ago\" reads as creepy and advertises the profile as dead.\n\t// The < 5 min \"online\" window matches the chat presence rule (RAT-372).\n\tconst presence = $derived.by(() => {\n\t\tif (data.viewer.isOwn || !p.lastActiveAt) return null;\n\t\tconst diff = Date.now() - new Date(p.lastActiveAt).getTime();\n\t\tconst m = Math.floor(diff / 60_000);\n\t\tconst h = Math.floor(diff / 3_600_000);\n\t\tconst d = Math.floor(diff / 86_400_000);\n\t\tif (d >= 7) return null;\n\t\tif (m < 5) return { online: true, text: t('Active now') };\n\t\tif (m < 60) return { online: false, text: t('Active {n}m ago', { n: m }) };\n\t\tif (h < 24) return { online: false, text: t('Active {n}h ago', { n: h }) };\n\t\treturn { online: false, text: t('Active {n}d ago', { n: d }) };\n\t});\n\n\ttype Tab = 'posts' | 'activity' | 'achievements' | 'reviews' | 'albums';\n\t// RAT-449: lead with the paid album when the creator has one — it's the\n\t// money-maker, so it's both first in the tab strip and pre-selected. No\n\t// album → unchanged (posts first + default).\n\tlet activeTab = $state<Tab>(data.albums.length > 0 ? 'albums' : 'posts');\n\n\t// Albums/collection tab: shown whenever the creator has ≥1 published album\n\t// (rater or not — matches the feed/arena/marketplace visibility), and always\n\t// on your own profile (create/manage entry + your unlocked collection).\n\tconst showAlbumsTab = $derived(data.albums.length > 0 || data.viewer.isOwn);\n\n\tfunction relTime(iso: string): string {\n\t\tconst diff = Date.now() - new Date(iso).getTime();\n\t\tconst m = Math.floor(diff / 60_000);\n\t\tconst h = Math.floor(diff / 3_600_000);\n\t\tconst d = Math.floor(diff / 86_400_000);\n\t\tif (m < 1) return t('just now');\n\t\tif (m < 60) return t('{n}m', { n: m });\n\t\tif (h < 24) return t('{n}h', { n: h });\n\t\tif (d < 7) return t('{n}d', { n: d });\n\t\treturn new Date(iso).toLocaleDateString(LOCALE_INFO[locale()].hreflang, { month: 'short', day: 'numeric' });\n\t}\n\n\t// Activity tile chip label / color per source. Source values match the\n\t// creator_post.source_content_type strings produced by the \"post to feed\"\n\t// flows on each surface: 'duel' | 'beat' | 'arena_submission' | 'generation'.\n\tfunction chipLabel(type: string | null): string {\n\t\tswitch (type) {\n\t\t\tcase 'duel':\n\t\t\t\treturn t('duel');\n\t\t\tcase 'beat':\n\t\t\t\treturn t('beat');\n\t\t\tcase 'arena_submission':\n\t\t\t\treturn t('arena');\n\t\t\tcase 'generation':\n\t\t\t\treturn t('rated');\n\t\t\tcase 'album':\n\t\t\t\treturn t('album');\n\t\t\tdefault:\n\t\t\t\treturn t('post');\n\t\t}\n\t}\n\t// The AI rating's mode on a score tile ('roast' | 'hype').\n\tfunction modeLabel(mode: string): string {\n\t\tif (mode === 'roast') return t('roast');\n\t\tif (mode === 'hype') return t('hype');\n\t\treturn mode;\n\t}\n\tfunction chipColorClass(t: string | null): string {\n\t\tswitch (t) {\n\t\t\tcase 'duel':\n\t\t\t\treturn 'bg-accent text-bg';\n\t\t\tcase 'beat':\n\t\t\t\treturn 'bg-yellow text-bg';\n\t\t\tcase 'arena_submission':\n\t\t\t\treturn 'bg-purple text-white';\n\t\t\tcase 'generation':\n\t\t\t\treturn 'bg-blue text-white';\n\t\t\tcase 'album':\n\t\t\t\treturn 'bg-purple text-white';\n\t\t\tdefault:\n\t\t\t\treturn 'bg-surface-2 text-text';\n\t\t}\n\t}\n\n\tonMount(() => {\n\t\ttrackProfileView({\n\t\t\tisOwnProfile: data.viewer.isOwn,\n\t\t\tviewerFollowsOwner: data.viewer.followsOwner,\n\t\t\tutmSource: page.url.searchParams.get('utm_source')\n\t\t});\n\t});\n\n\tconst reviewBars = $derived(\n\t\treviews?.breakdown\n\t\t\t? [\n\t\t\t\t\t{ label: t('accuracy'), val: reviews.breakdown.accuracy },\n\t\t\t\t\t{ label: t('detail'), val: reviews.breakdown.detail },\n\t\t\t\t\t{ label: t('consistency'), val: reviews.breakdown.consistency },\n\t\t\t\t\t{ label: t('volume'), val: reviews.breakdown.volume }\n\t\t\t\t]\n\t\t\t: []\n\t);\n\n\t// An indexable profile tells search engines what it is: a member's page, the\n\t// bio they wrote and how many follow them. No image: avatars here can be\n\t// explicit.\n\tconst profileLd = $derived(\n\t\tdata.seo.noindex\n\t\t\t? ''\n\t\t\t: jsonLdScript({\n\t\t\t\t\t'@context': 'https://schema.org',\n\t\t\t\t\t'@type': 'ProfilePage',\n\t\t\t\t\turl: canonical(page.url.pathname),\n\t\t\t\t\tdateCreated: p.createdAt,\n\t\t\t\t\tmainEntity: {\n\t\t\t\t\t\t'@type': 'Person',\n\t\t\t\t\t\tname: p.nickname,\n\t\t\t\t\t\talternateName: `@${p.nickname}`,\n\t\t\t\t\t\tdescription: p.bio?.replace(/\\s+/g, ' ').trim() || undefined,\n\t\t\t\t\t\tinteractionStatistic: {\n\t\t\t\t\t\t\t'@type': 'InteractionCounter',\n\t\t\t\t\t\t\tinteractionType: 'https://schema.org/FollowAction',\n\t\t\t\t\t\t\tuserInteractionCount: data.counts.followers\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t);\n</script>\n\n<svelte:head>\n\t{#if profileLd}{@html profileLd}{/if}\n</svelte:head>\n\n<div class=\"page\">\n\t<!-- COVER -->\n\t<div class=\"cover\">\n\t\t{#if coverUrl}<img src={coverUrl} alt=\"\" class=\"cover-img\" />{/if}\n\t\t<div class=\"cover-fade\"></div>\n\t</div>\n\n\t<div class=\"body\">\n\t\t<div class=\"cols\">\n\t\t\t<!-- ───────── MAIN ───────── -->\n\t\t\t<div class=\"main-col\">\n\t\t\t\t<div class=\"head\">\n\t\t\t\t\t<!-- avatar (tappable when a story is live) -->\n\t\t\t\t\t{#if storyGroup}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"avatar avatar--story\"\n\t\t\t\t\t\t\tclass:avatar--viewed={allStoriesViewed}\n\t\t\t\t\t\t\tonclick={openStory}\n\t\t\t\t\t\t\taria-label={t(\"view {name}'s story\", { name: p.nickname })}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{#if avatarUrl}<img src={avatarUrl} alt=\"\" />{:else}<span class=\"ph\">{initial}</span>{/if}\n\t\t\t\t\t\t\t{#if p.isRater && p.queueOpen}<span class=\"online\"></span>{/if}\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<div class=\"avatar\">\n\t\t\t\t\t\t\t{#if avatarUrl}<img src={avatarUrl} alt=\"\" />{:else}<span class=\"ph\">{initial}</span>{/if}\n\t\t\t\t\t\t\t{#if p.isRater && p.queueOpen}<span class=\"online\"></span>{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<div class=\"name-row\">\n\t\t\t\t\t\t<h1 class=\"display\">{p.nickname}</h1>\n\t\t\t\t\t\t<span class=\"badges\">\n\t\t\t\t\t\t\t{#if p.isBanned}<span class=\"badge badge-banned\">{t('banned')}</span>{/if}\n\t\t\t\t\t\t\t{#if p.isUnderReview}<span class=\"badge badge-review\">{t('under review')}</span>{/if}\n\t\t\t\t\t\t\t{#if p.isAdmin}<AdminBadge />{:else if p.isModerator}<AdminBadge variant=\"moderator\" />{/if}\n\t\t\t\t\t\t\t{#if data.viewer.isOwn && !p.isVerified}\n\t\t\t\t\t\t\t\t<!-- own + unverified: a shimmering verified emblem that invites a tap\n\t\t\t\t\t\t\t\t     to earn it — sits exactly where the real badge would, no text. -->\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"gv-emblem\" onclick={() => (verifyOpen = true)} aria-label={t('get verified')} title={t('get verified')}>\n\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M9.6 16.2 5.4 12l-1.4 1.4 5.6 5.6L20.4 8.2 19 6.8z\" /></svg>\n\t\t\t\t\t\t\t\t\t<span class=\"gv-shine\" aria-hidden=\"true\"></span>\n\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t<UserBadge\n\t\t\t\t\t\t\t\tverified={p.isVerified}\n\t\t\t\t\t\t\t\tambassador={p.isAmbassador}\n\t\t\t\t\t\t\t\ttopRater={p.raterContestWins > 0}\n\t\t\t\t\t\t\t\trater={p.isRater}\n\t\t\t\t\t\t\t\tcreator={p.isCreator}\n\t\t\t\t\t\t\t\tsubscriber={p.isSubscriber}\n\t\t\t\t\t\t\t\tsize={16}\n\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{#if p.contestWins > 0}\n\t\t\t\t\t\t\t\t<a class=\"champ-chip\" href=\"/contest\" title={t('weekly contest winner')}><span class=\"champ-emblem\">\n\t\t\t\t\t\t\t\t\t<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M6 9H4.5a2.5 2.5 0 0 1 0-5H6\" /><path d=\"M18 9h1.5a2.5 2.5 0 0 0 0-5H18\" /><path d=\"M4 22h16\" /><path d=\"M18 2H6v7a6 6 0 0 0 12 0V2Z\" /></svg></span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- clan badge under the name -->\n\t\t\t\t\t{#if p.clan}\n\t\t\t\t\t\t<a class=\"clan-line\" href=\"/k/{p.clan.tag}\">\n\t\t\t\t\t\t\t<ClanEmblem tag={p.clan.tag} avatarPath={p.clan.avatarPath} size={18} link={false} />\n\t\t\t\t\t\t\t<span class=\"clan-line-name\">{p.clan.name}</span>\n\t\t\t\t\t\t\t<span class=\"clan-line-tag\">#{p.clan.tag}</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t{:else if !p.isBanned && !p.isUnderReview}\n\t\t\t\t\t\t<span class=\"clan-line clan-line--none\">{t('no clan · lone wolf')}</span>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<!-- partner chip under the clan line — same row pattern, coral heart -->\n\t\t\t\t\t{#if p.partner}\n\t\t\t\t\t\t<div class=\"partner-row\">\n\t\t\t\t\t\t\t<a class=\"clan-line partner-line\" href=\"/u/{p.partner.nickname}\">\n\t\t\t\t\t\t\t\t<span class=\"partner-line-heart\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\"><path d=\"M12 21s-7.5-4.6-9.6-9.2C1 8.3 3.3 4.5 6.9 4.5c2 0 3.5 1.1 4.3 2.4.8-1.3 2.3-2.4 4.3-2.4 3.6 0 5.9 3.8 4.5 7.3C19.5 16.4 12 21 12 21z\" /></svg></span>\n\t\t\t\t\t\t\t\t<span class=\"clan-line-name\">{t('taken by @{name}', { name: p.partner.nickname ?? '' })}</span>\n\t\t\t\t\t\t\t\t<span class=\"partner-line-since\">· {t('since {date}', { date: new Date(p.partner.since).toLocaleDateString(LOCALE_INFO[locale()].hreflang, { month: 'short', day: 'numeric' }).toLowerCase() })}</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{:else if !p.isBanned && !p.isUnderReview}\n\t\t\t\t\t\t<div class=\"partner-row\"><span class=\"clan-line clan-line--none\">{t('single · shoot your shot')}</span></div>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<div class=\"meta\">\n\t\t\t\t\t\t{#if p.isRater && p.queueOpen}\n\t\t\t\t\t\t\t<span class=\"pres\"><span class=\"pdot\"></span> {t('accepting pics now')}</span>\n\t\t\t\t\t\t{:else if presence}\n\t\t\t\t\t\t\t<span class=\"pres\" class:pres--online={presence.online}>\n\t\t\t\t\t\t\t\t{#if presence.online}<span class=\"pdot\"></span>{/if}\n\t\t\t\t\t\t\t\t{presence.text}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t<span>{t('joined {date}', { date: joinedFmt })}</span>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{#if p.bio}<p class=\"bio\">{p.bio}</p>{/if}\n\t\t\t\t\t{#if p.links?.length}\n\t\t\t\t\t\t<div class=\"links\">\n\t\t\t\t\t\t\t{#each p.links as l (l.kind)}\n\t\t\t\t\t\t\t\t{@const d = linkKindDef(l.kind)}\n\t\t\t\t\t\t\t\t{#if d}\n\t\t\t\t\t\t\t\t\t<a class=\"lk\" href={d.href(l.value)} target=\"_blank\" rel=\"nofollow noopener noreferrer\" title={d.name}>\n\t\t\t\t\t\t\t\t\t\t<ProfileLinkIcon kind={l.kind} />\n\t\t\t\t\t\t\t\t\t\t<span>{d.label(l.value)}</span>\n\t\t\t\t\t\t\t\t\t\t{#if l.kind === 'url'}<svg class=\"ext\" viewBox=\"0 0 24 24\" width=\"11\" height=\"11\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path d=\"M7 17 17 7M9 7h8v8\" /></svg>{/if}\n\t\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t{#if !p.isBanned && !p.isUnderReview}\n\t\t\t\t\t\t<!-- level + XP (earned from duels) -->\n\t\t\t\t\t\t<div class=\"xp\">\n\t\t\t\t\t\t\t<div class=\"xp-top\">\n\t\t\t\t\t\t\t\t<span class=\"xp-lvl\">{t('lvl {n}', { n: p.level })}</span>\n\t\t\t\t\t\t\t\t<span class=\"xp-meta\">{t('{xp} XP · {next} to lvl {n}', { xp: fmtNum(p.xp), next: fmtNum(xpProg.toNext), n: p.level + 1 })}</span>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t<div class=\"xp-bar\"><i style=\"width:{xpProg.pct}%\"></i></div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<!-- stats -->\n\t\t\t\t\t<div class=\"stats\">\n\t\t\t\t\t\t<a class=\"stat\" href=\"/u/{encodeURIComponent(p.nickname)}/followers\">\n\t\t\t\t\t\t\t<span class=\"v\">{counts.followers}</span>\n\t\t\t\t\t\t\t<span class=\"l\">{counts.followers === 1 ? t('follower') : t('followers')}</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t<a class=\"stat\" href=\"/u/{encodeURIComponent(p.nickname)}/following\">\n\t\t\t\t\t\t\t<span class=\"v\">{counts.following}</span>\n\t\t\t\t\t\t\t<span class=\"l\">{t('following')}</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t\t{#if data.activityHidden}\n\t\t\t\t\t\t\t<!-- Owner keeps activity private — say so instead of the get-rated\n\t\t\t\t\t\t\t     CTA, which read as \"this user has no score\". -->\n\t\t\t\t\t\t\t<div class=\"stat\" title={t('this user keeps their scores private')}>\n\t\t\t\t\t\t\t\t<span class=\"v v--muted v--sm\">{t('private')}</span>\n\t\t\t\t\t\t\t\t<span class=\"l\">{t('score')}</span>\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<a class=\"stat\" href=\"/rate\" title={p.bestScore > 0 ? t('best AI score') : t('get rated')}>\n\t\t\t\t\t\t\t\t{#if p.bestScore > 0}\n\t\t\t\t\t\t\t\t\t<span class=\"v v--green\">{p.bestScore.toFixed(1)}<span class=\"suf\">/10</span></span>\n\t\t\t\t\t\t\t\t\t<span class=\"l\">{t('best AI score')}</span>\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<span class=\"v v--green v--sm\">{t('+ rate')}</span>\n\t\t\t\t\t\t\t\t\t<span class=\"l\">{t('get scored')}</span>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t<a class=\"stat\" href=\"/l\">\n\t\t\t\t\t\t\t{#if data.rank != null}\n\t\t\t\t\t\t\t\t<span class=\"v v--accent\">#{data.rank}</span>\n\t\t\t\t\t\t\t\t<span class=\"l\">{t('rank')}</span>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<span class=\"v v--muted\">—</span>\n\t\t\t\t\t\t\t\t<span class=\"l\">{t('unranked')}</span>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t<!-- actions -->\n\t\t\t\t\t{#if !data.viewer.isOwn && !p.isBanned && !p.isUnderReview}\n\t\t\t\t\t\t<div class=\"actions\">\n\t\t\t\t\t\t\t{#if data.viewer.isLoggedIn}\n\t\t\t\t\t\t\t\t<FollowButton\n\t\t\t\t\t\t\t\t\ttargetUserId={p.id}\n\t\t\t\t\t\t\t\t\tinitialIsFollowing={data.viewer.followsOwner}\n\t\t\t\t\t\t\t\t\tsource=\"profile\"\n\t\t\t\t\t\t\t\t\taccent={p.isRater ? 'green' : 'coral'}\n\t\t\t\t\t\t\t\t\toncountschange={(c) => {\n\t\t\t\t\t\t\t\t\t\tcounts.followers = c.followers;\n\t\t\t\t\t\t\t\t\t\tcounts.following = c.following;\n\t\t\t\t\t\t\t\t\t}}\n\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<a href=\"/auth/sign-in?next=/u/{encodeURIComponent(p.nickname)}\" class=\"act act-follow\">\n\t\t\t\t\t\t\t\t\t<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" aria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\" /></svg>\n\t\t\t\t\t\t\t\t\t{t('follow')}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t{#if data.viewer.isLoggedIn}\n\t\t\t\t\t\t\t\t<button type=\"button\" class=\"act act-message\" onclick={openMessageSheet}>{t('message')}</button>\n\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t<a\n\t\t\t\t\t\t\t\t\thref=\"/auth/sign-in?next=/c/{encodeURIComponent(p.nickname)}\"\n\t\t\t\t\t\t\t\t\tonclick={(e) => profileGate(e, 'profile_message')}\n\t\t\t\t\t\t\t\t\tclass=\"act act-message\">{t('message')}</a\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<ShareButton nickname={p.nickname} isOwnProfile={data.viewer.isOwn} />\n\t\t\t\t\t\t\t\t{#if data.viewer.isLoggedIn}\n\t\t\t\t\t\t\t\t\t<button class=\"act gift-act\" onclick={() => (giftOpen = true)}>\n\t\t\t\t\t\t\t\t\t\t<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 12 20 22 4 22 4 12\" /><rect x=\"2\" y=\"7\" width=\"20\" height=\"5\" /><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\" /><path d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\" /><path d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\" /></svg>\n\t\t\t\t\t\t\t\t\t\t{t('send a gift')}\n\t\t\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\n\t\t\t\t\t<!-- rater value prop (option 2). queueOpen-gated: a paused rater's\n\t\t\t\t\t card advertised a queue nobody could join — the RATER chip and\n\t\t\t\t\t reviews tab still carry the identity while paused. -->\n\t\t\t\t\t{#if p.isRater && p.queueOpen && !data.viewer.isOwn}\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\tuse:watchRatecard\n\t\t\t\t\t\t\tclass=\"ratecard\"\n\t\t\t\t\t\t\tonclick={(e) => profileGate(e, 'rater_dm')}\n\t\t\t\t\t\t\thref={data.viewer.isLoggedIn\n\t\t\t\t\t\t\t\t? `/c/${encodeURIComponent(p.nickname)}?from=profile_rate`\n\t\t\t\t\t\t\t\t: `/auth/sign-in?next=${encodeURIComponent(`/c/${encodeURIComponent(p.nickname)}?from=profile_rate`)}`}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"ratecard-ic\">\n\t\t\t\t\t\t\t\t<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\" /><circle cx=\"12\" cy=\"13\" r=\"4\" /></svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"ratecard-tx\">\n\t\t\t\t\t\t\t\t<span class=\"ratecard-t\">\n\t\t\t\t\t\t\t\t\t{t('send a pic · get rated')}\n\t\t\t\t\t\t\t\t\t<!-- RAT-423: free vs token-only marker -->\n\t\t\t\t\t\t\t\t\t{#if p.freeRateEnabled}\n\t\t\t\t\t\t\t\t\t\t<span class=\"ratecard-price ratecard-price--free\">{t('free')}</span>\n\t\t\t\t\t\t\t\t\t{:else if p.rateMinPriceTokens > 0}\n\t\t\t\t\t\t\t\t\t\t<span class=\"ratecard-price ratecard-price--paid\">{t('from {n} tokens', { n: p.rateMinPriceTokens })}</span>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{#if reviews && reviews.total > 0}\n\t\t\t\t\t\t\t\t\t<span class=\"ratecard-s\">\n\t\t\t\t\t\t\t\t\t\t<span class=\"ratecard-stars\">{'★★★★★'}</span>\n\t\t\t\t\t\t\t\t\t\t{reviews.avg.toFixed(1)} · {reviews.total === 1\n\t\t\t\t\t\t\t\t\t\t\t? t('1 review')\n\t\t\t\t\t\t\t\t\t\t\t: t('{n} reviews', { n: reviews.total })}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<span class=\"ratecard-s\">{t('be the first to drop a submission.')}</span>\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"ratecard-btn\">\n\t\t\t\t\t\t\t\t<span class=\"ratecard-btn-l\">{t('get rated')}</span>\n\t\t\t\t\t\t\t\t<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M5 12h14M13 5l7 7-7 7\" /></svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\n\t\t\t\t<!-- TAB STRIP -->\n\t\t\t\t<nav class=\"tabs\" aria-label={t('profile content')}>\n\t\t\t\t\t{#if data.albums.length > 0}\n\t\t\t\t\t\t{@render albumsTabBtn()}\n\t\t\t\t\t{/if}\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"tab\"\n\t\t\t\t\t\tclass:tab--active={activeTab === 'posts'}\n\t\t\t\t\t\tonclick={() => (activeTab = 'posts')}\n\t\t\t\t\t\taria-label={t('posts')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"ti\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" aria-hidden=\"true\"><rect x=\"3\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" /><rect x=\"14\" y=\"3\" width=\"7\" height=\"7\" rx=\"1\" /><rect x=\"3\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" /><rect x=\"14\" y=\"14\" width=\"7\" height=\"7\" rx=\"1\" /></svg></span>\n\t\t\t\t\t\t<span class=\"tl\">{t('posts')}</span>\n\t\t\t\t\t</button>\n\t\t\t\t\t{#if !data.activityHidden}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"tab\"\n\t\t\t\t\t\t\tclass:tab--active={activeTab === 'activity'}\n\t\t\t\t\t\t\tonclick={() => (activeTab = 'activity')}\n\t\t\t\t\t\t\taria-label={t('activity')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"ti\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polygon points=\"13 2 3 14 11 14 11 22 21 10 13 10 13 2\" /></svg></span>\n\t\t\t\t\t\t\t<span class=\"tl\">{t('activity')}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/if}\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"tab\"\n\t\t\t\t\t\tclass:tab--active={activeTab === 'achievements'}\n\t\t\t\t\t\tonclick={() => (activeTab = 'achievements')}\n\t\t\t\t\t\taria-label={t('achievements')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"ti\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><circle cx=\"12\" cy=\"8\" r=\"6\" /><path d=\"M8.5 13.5 7 22l5-3 5 3-1.5-8.5\" /></svg></span>\n\t\t\t\t\t\t<span class=\"tl\">{t('achievements')}</span>\n\t\t\t\t\t\t{#if data.achievements.total}\n\t\t\t\t\t\t\t<span class=\"tab-badge\">{data.achievements.earnedCount}/{data.achievements.total}</span>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t</button>\n\t\t\t\t\t{#if p.isRater}\n\t\t\t\t\t\t<button\n\t\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\t\tclass=\"tab tab--rater\"\n\t\t\t\t\t\t\tclass:tab--active={activeTab === 'reviews'}\n\t\t\t\t\t\t\tonclick={() => (activeTab = 'reviews')}\n\t\t\t\t\t\t\taria-label={t('reviews')}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"ti\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><polygon points=\"12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2\" /></svg></span>\n\t\t\t\t\t\t\t<span class=\"tl\">{t('reviews')}</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t{/if}\n\t\t\t\t\t<!-- Own profile with no album yet: keep the albums tab last (create CTA\n\t\t\t\t\t     lives inside). With an album it's rendered first (below). -->\n\t\t\t\t\t{#if showAlbumsTab && data.albums.length === 0}\n\t\t\t\t\t\t{@render albumsTabBtn()}\n\t\t\t\t\t{/if}\n\t\t\t\t</nav>\n\n\t\t\t\t{#snippet albumsTabBtn()}\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass=\"tab tab--albums\"\n\t\t\t\t\t\tclass:tab--active={activeTab === 'albums'}\n\t\t\t\t\t\tonclick={() => (activeTab = 'albums')}\n\t\t\t\t\t\taria-label={t('albums')}\n\t\t\t\t\t>\n\t\t\t\t\t\t<span class=\"ti\"><svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" /><path d=\"m21 15-5-5L5 21\" /></svg></span>\n\t\t\t\t\t\t<span class=\"tl\">{t('albums')}</span>\n\t\t\t\t\t</button>\n\t\t\t\t{/snippet}\n\n\t\t\t\t<!-- POSTS -->\n\t\t\t\t{#if activeTab === 'posts'}\n\t\t\t\t\t{#if data.posts.length === 0}\n\t\t\t\t\t\t<div class=\"empty-state\">\n\t\t\t\t\t\t\t<p class=\"empty-title\">{t('no posts yet')}</p>\n\t\t\t\t\t\t\t<p class=\"empty-sub\">\n\t\t\t\t\t\t\t\t{data.viewer.isOwn\n\t\t\t\t\t\t\t\t\t? t('share something to the feed — it shows up here.')\n\t\t\t\t\t\t\t\t\t: t(\"@{name} hasn't posted to the feed yet.\", { name: p.nickname })}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t{#each allPosts as post (post.id)}\n\t\t\t\t\t\t\t\t<a class=\"tile\" href=\"/post/{post.id}\">\n\t\t\t\t\t\t\t\t\t{#if post.imageUrl && !tileImgFailed.has(post.id)}\n\t\t\t\t\t\t\t\t\t\t<img src={post.imageUrl} alt=\"\" loading=\"lazy\" class=\"tile-img\" onerror={() => tileImgFailed.add(post.id)} />\n\t\t\t\t\t\t\t\t\t{:else if post.videoUrl && !tileVideoFailed.has(post.id)}\n\t\t\t\t\t\t\t\t\t\t<!-- svelte-ignore a11y_media_has_caption -->\n\t\t\t\t\t\t\t\t\t\t<!-- The stored poster is only the `poster` attribute, never the tile's\n\t\t\t\t\t\t\t\t\t\t\t source: PostComposer captures it on `onloadedmetadata`, so it is\n\t\t\t\t\t\t\t\t\t\t\t frequently a blank frame, and a blank-but-valid webp loads fine —\n\t\t\t\t\t\t\t\t\t\t\t no onerror, just a permanently empty tile. As a poster it is free:\n\t\t\t\t\t\t\t\t\t\t\t it paints instantly, and `#t=0.1` overwrites it with the real first\n\t\t\t\t\t\t\t\t\t\t\t frame as soon as that decodes. -->\n\t\t\t\t\t\t\t\t\t\t<video src=\"{post.videoUrl}#t=0.1\" poster={post.posterUrl ?? undefined} preload=\"metadata\" muted playsinline class=\"tile-img\" onerror={() => tileVideoFailed.add(post.id)}></video>\n\t\t\t\t\t\t\t\t\t{:else if post.kind === 'tierlist'}\n\t\t\t\t\t\t\t\t\t\t<div class=\"tile-tierlist\">\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"tile-tierlist-bars\" aria-hidden=\"true\">\n\t\t\t\t\t\t\t\t\t\t\t\t<span style=\"background: var(--color-coral)\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span style=\"background: var(--color-orange)\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span style=\"background: var(--color-yellow)\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span style=\"background: var(--color-green)\"></span>\n\t\t\t\t\t\t\t\t\t\t\t\t<span style=\"background: var(--color-blue)\"></span>\n\t\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"tile-tierlist-title\">{post.tierlistTitle ?? t('tier list')}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{:else if post.kind === 'text' && post.caption}\n\t\t\t\t\t\t\t\t\t\t<div class=\"tile-text\"><span class=\"tile-text-body\">{post.caption}</span></div>\n\t\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t\t<div class=\"tile-fallback\">\n\t\t\t\t\t\t\t\t\t\t\t{#if post.kind === 'link'}\n\t\t\t\t\t\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71\" /><path d=\"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71\" /></svg>\n\t\t\t\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\" /></svg>\n\t\t\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t\t{#if post.kind === 'video'}\n\t\t\t\t\t\t\t\t\t\t<span class=\"tile-corner\" aria-hidden=\"true\"><svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><polygon points=\"5 3 19 12 5 21 5 3\" /></svg></span>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{#if postsHasMore}\n\t\t\t\t\t\t\t<button type=\"button\" class=\"load-more\" disabled={postsLoading} onclick={loadMorePosts}>\n\t\t\t\t\t\t\t\t{postsLoading ? t('loading…') : t('load more')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{/if}\n\t\t\t\t{/if}\n\n\t\t\t\t<!-- ACTIVITY -->\n\t\t\t\t{#if activeTab === 'activity'}\n\t\t\t\t\t{#if allActivity.length === 0}\n\t\t\t\t\t\t<div class=\"empty-state\">\n\t\t\t\t\t\t\t<p class=\"empty-title\">{t('no activity yet')}</p>\n\t\t\t\t\t\t\t<p class=\"empty-sub\">\n\t\t\t\t\t\t\t\t{data.viewer.isOwn\n\t\t\t\t\t\t\t\t\t? t('duel · beat · arena · get-rated results posted to feed appear here.')\n\t\t\t\t\t\t\t\t\t: t(\"@{name} hasn't posted any duels, beats, arena entries, or ratings yet.\", { name: p.nickname })}\n\t\t\t\t\t\t\t</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<div class=\"grid\">\n\t\t\t\t\t\t\t{#each allActivity as item (item.id)}\n\t\t\t\t\t\t\t\t<a class=\"tile\" href={item.href}>\n\t\t\t\t\t\t\t\t\t{#if item.imageUrl && !brokenImgs.has(item.id) && item.mediaType === 'video'}\n\t\t\t\t\t\t\t\t\t\t<!-- svelte-ignore a11y_media_has_caption -->\n\t\t\t\t\t\t\t\t\t\t<video src={item.imageUrl} preload=\"metadata\" muted playsinline class=\"tile-img\"></video>\n\t\t\t\t\t\t\t\t\t{:else if item.imageUrl && !brokenImgs.has(item.id)}\n\t\t\t\t\t\t\t\t\t\t<img\n\t\t\t\t\t\t\t\t\t\t\tsrc={item.imageUrl}\n\t\t\t\t\t\t\t\t\t\t\talt=\"\"\n\t\t\t\t\t\t\t\t\t\t\tloading=\"lazy\"\n\t\t\t\t\t\t\t\t\t\t\tclass=\"tile-img\"\n\t\t\t\t\t\t\t\t\t\t\tonerror={() => brokenImgs.add(item.id)}\n\t\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t\t{:else if item.fallback?.kind === 'generation_score'}\n\t\t\t\t\t\t\t\t\t\t<div class=\"tile-score\" class:tile-score--hype={item.fallback.mode === 'hype'}>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"tile-score-num\">{item.fallback.score.toFixed(1)}</span>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"tile-score-suf\">/10</span>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"tile-score-mode\">{modeLabel(item.fallback.mode)}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t\t<div class=\"tile-fallback\">\n\t\t\t\t\t\t\t\t\t\t\t<svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polygon points=\"13 2 3 14 11 14 11 22 21 10 13 10 13 2\" /></svg>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t\t\t<span class=\"src-chip {chipColorClass(item.sourceContentType)}\">\n\t\t\t\t\t\t\t\t\t\t{chipLabel(item.sourceContentType)}\n\t\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{#if activityHasMore}\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\tclass=\"load-more\"\n\t\t\t\t\t\t\t\tdisabled={activityLoading}\n\t\t\t\t\t\t\t\tonclick={loadMoreActivity}\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t{activityLoading ? t('loading…') : t('load more')}\n\t\t\t\t\t\t\t</button>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{/if}\n\t\t\t\t{/if}\n\n\t\t\t\t<!-- REVIEWS · rater only -->\n\t\t\t\t{#if activeTab === 'reviews' && reviews && reviews.breakdown}\n\t\t\t\t\t<div class=\"reviews\">\n\t\t\t\t\t\t{#if reviews.total > 0}\n\t\t\t\t\t\t\t<div class=\"scorecard\">\n\t\t\t\t\t\t\t\t<div class=\"score-big\">\n\t\t\t\t\t\t\t\t\t<div class=\"n\">{reviews.breakdown.overall.toFixed(1)}</div>\n\t\t\t\t\t\t\t\t\t<div class=\"s\">{t('/10 overall')}</div>\n\t\t\t\t\t\t\t\t\t<div class=\"ap\">{reviews.total === 1\n\t\t\t\t\t\t\t\t\t\t? t('{pct}% approval · 1 review', { pct: reviews.approvalPct })\n\t\t\t\t\t\t\t\t\t\t: t('{pct}% approval · {n} reviews', { pct: reviews.approvalPct, n: reviews.total })}</div>\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"bars\">\n\t\t\t\t\t\t\t\t\t{#each reviewBars as bar (bar.label)}\n\t\t\t\t\t\t\t\t\t\t<div class=\"bar\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"bl\">{bar.label}</span>\n\t\t\t\t\t\t\t\t\t\t\t<div class=\"track\"><div class=\"fill\" style:width=\"{bar.val * 10}%\"></div></div>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"bv\">{bar.val > 0 ? bar.val.toFixed(1) : '—'}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t{/each}\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\t<div class=\"reviewlist\">\n\t\t\t\t\t\t\t\t{#each reviews.recent as r (r.id)}\n\t\t\t\t\t\t\t\t\t<div class=\"review\">\n\t\t\t\t\t\t\t\t\t\t<div class=\"rh\">\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"rstars\">{#each Array(5) as _, i (i)}<span class:on={i < r.rating}>★</span>{/each}</span>\n\t\t\t\t\t\t\t\t\t\t\t<span class=\"rm\">{r.requesterNickname ? `@${r.requesterNickname}` : t('anon')} · {relTime(r.createdAt)}</span>\n\t\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t\t\t{#if r.body}<p class=\"rb\">{r.body}</p>{/if}\n\t\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t{/each}\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 class=\"empty-state\">\n\t\t\t\t\t\t\t\t<p class=\"empty-title\">{t('no reviews yet')}</p>\n\t\t\t\t\t\t\t\t<p class=\"empty-sub\">\n\t\t\t\t\t\t\t\t\t{data.viewer.isOwn\n\t\t\t\t\t\t\t\t\t\t? t(\"you haven't been reviewed yet. complete a few rate sessions to start gathering reviews.\")\n\t\t\t\t\t\t\t\t\t\t: t(\"@{name} hasn't been reviewed yet.\", { name: p.nickname })}\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{/if}\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\n\t\t\t\t<!-- ALBUMS / COLLECTION -->\n\t\t\t\t{#if activeTab === 'albums'}\n\t\t\t\t\t{#if data.viewer.isOwn}\n\t\t\t\t\t\t<!-- creator studio — turn your photos into income (any creator) -->\n\t\t\t\t\t\t<a class=\"album-boost\" href=\"/album\">\n\t\t\t\t\t\t\t<span class=\"ab-ic\">\n\t\t\t\t\t\t\t\t<svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.9\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"2\" /><circle cx=\"8.5\" cy=\"8.5\" r=\"1.5\" /><path d=\"m21 15-5-5L5 21\" /></svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"ab-tx\">\n\t\t\t\t\t\t\t\t<span class=\"ab-t\">{data.albums.length > 0 ? t('manage your albums') : t('turn your photos into income')}</span>\n\t\t\t\t\t\t\t\t<span class=\"ab-s\">\n\t\t\t\t\t\t\t\t\t{data.albums.length > 0\n\t\t\t\t\t\t\t\t\t\t? data.albums.length === 1\n\t\t\t\t\t\t\t\t\t\t\t? t('1 album · every unlock pays you')\n\t\t\t\t\t\t\t\t\t\t\t: t('{n} albums · every unlock pays you', { n: data.albums.length })\n\t\t\t\t\t\t\t\t\t\t: t('put a photo set in an album, set a price, and get paid for every unlock.')}\n\t\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"ab-btn\">{data.albums.length > 0 ? t('open studio') : t('create album')}</span>\n\t\t\t\t\t\t</a>\n\n\t\t\t\t\t\t{#if data.albums.length > 0}\n\t\t\t\t\t\t\t<div class=\"albums-grid\">\n\t\t\t\t\t\t\t\t{#each data.albums as album (album.id)}\n\t\t\t\t\t\t\t\t\t<AlbumCard {album} owner />\n\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\n\t\t\t\t\t\t<!-- your collection: unlocked albums -->\n\t\t\t\t\t\t{#if data.unlockedAlbums.length > 0}\n\t\t\t\t\t\t\t<div class=\"collection-h\">{t('unlocked · your collection')}</div>\n\t\t\t\t\t\t\t<div class=\"albums-grid\">\n\t\t\t\t\t\t\t\t{#each data.unlockedAlbums as album (album.id)}\n\t\t\t\t\t\t\t\t\t<AlbumCard {album} showCreator />\n\t\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{:else if !p.isRater}\n\t\t\t\t\t\t\t<div class=\"empty-state\">\n\t\t\t\t\t\t\t\t<p class=\"empty-title\">{t('no unlocked albums yet')}</p>\n\t\t\t\t\t\t\t\t<p class=\"empty-sub\">{t('albums you unlock from creators show up here — yours forever.')}</p>\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t{/if}\n\t\t\t\t\t{:else if data.albums.length === 0}\n\t\t\t\t\t\t<div class=\"empty-state\">\n\t\t\t\t\t\t\t<p class=\"empty-title\">{t('no albums yet')}</p>\n\t\t\t\t\t\t\t<p class=\"empty-sub\">{t(\"@{name} hasn't published any albums yet.\", { name: p.nickname })}</p>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{:else}\n\t\t\t\t\t\t<div class=\"albums-grid\">\n\t\t\t\t\t\t\t{#each data.albums as album (album.id)}\n\t\t\t\t\t\t\t\t<AlbumCard {album} surface=\"profile\" trackView={false} />\n\t\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t{/if}\n\n\t\t\t\t\t<!-- ACHIEVEMENTS -->\n\t\t\t\t\t{#if activeTab === 'achievements'}\n\t\t\t\t\t\t<AchievementGrid items={data.achievements.items} />\n\t\t\t\t\t{/if}\n\t\t\t</div>\n\n\t\t\t<!-- ───────── SIDEBAR ───────── -->\n\t\t\t<aside class=\"side\" aria-label={t('about and suggested raters')}>\n\t\t\t\t<div class=\"card\">\n\t\t\t\t\t<h3 class=\"card-h\">{t('about')}</h3>\n\t\t\t\t\t<div class=\"about-row\">\n\t\t\t\t\t\t<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"18\" rx=\"2\" /><path d=\"M16 2v4M8 2v4M3 10h18\" /></svg>\n\t\t\t\t\t\t<span class=\"ak\">{t('joined')}</span><span class=\"av-v\">{joinedFmt}</span>\n\t\t\t\t\t</div>\n\t\t\t\t\t{#if data.rank != null}\n\t\t\t\t\t\t<div class=\"about-row\">\n\t\t\t\t\t\t\t<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"22 12 18 12 15 21 9 3 6 12 2 12\" /></svg>\n\t\t\t\t\t\t\t<span class=\"ak\">{t('leaderboard')}</span><span class=\"av-v av-v--accent\">#{data.rank}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t\t{#if p.totalRates > 0}\n\t\t\t\t\t\t<div class=\"about-row\">\n\t\t\t\t\t\t\t<svg width=\"15\" height=\"15\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z\" /><circle cx=\"12\" cy=\"13\" r=\"4\" /></svg>\n\t\t\t\t\t\t\t<span class=\"ak\">{t('times rated')}</span><span class=\"av-v\">{p.totalRates}</span>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t\t{#if !data.viewer.isOwn}\n\t\t\t\t\t\t<div class=\"report-row\">\n\t\t\t\t\t\t\t<ReportTrigger entityType=\"profile\" entityId={p.id} label={t('report this user')} />\n\t\t\t\t\t\t</div>\n\t\t\t\t\t{/if}\n\t\t\t\t</div>\n\n\t\t\t\t{#if data.suggestedRaters && data.suggestedRaters.length > 0}\n\t\t\t\t\t<div class=\"card\">\n\t\t\t\t\t\t<h3 class=\"card-h\">{t('discover raters')}</h3>\n\t\t\t\t\t\t{#each data.suggestedRaters as r (r.id)}\n\t\t\t\t\t\t\t{@const av = getAvatarUrl(r.avatarPath)}\n\t\t\t\t\t\t\t<a href=\"/u/{encodeURIComponent(r.nickname)}\" class=\"sr\">\n\t\t\t\t\t\t\t\t<div class=\"sr-av\">\n\t\t\t\t\t\t\t\t\t{#if av}<img src={av} alt=\"\" />{:else}<span>{r.nickname.charAt(0).toUpperCase()}</span>{/if}\n\t\t\t\t\t\t\t\t\t{#if r.queueOpen}<span class=\"sr-dot\" title={t('accepting now')}></span>{/if}\n\t\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t\t\t<div class=\"sr-tx\">\n\t\t\t\t\t\t\t\t\t<div class=\"sr-n\">@{r.nickname}</div>\n\t\t\t\t\t\t\t\t\t<div class=\"sr-m\">\n\t\t\t\t\t\t\t\t\t\t{r.followers === 1\n\t\t\t\t\t\t\t\t\t\t\t? t('1 follower')\n\t\t\t\t\t\t\t\t\t\t\t: t('{n} followers', { n: r.followers })}{#if r.rates > 0} · {r.rates === 1\n\t\t\t\t\t\t\t\t\t\t\t\t? t('1 rate')\n\t\t\t\t\t\t\t\t\t\t\t\t: t('{n} rates', { n: r.rates })}{/if}\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 class=\"sr-go\">{t('view')}</span>\n\t\t\t\t\t\t\t</a>\n\t\t\t\t\t\t{/each}\n\t\t\t\t\t\t<a href=\"/r\" class=\"seeall\">{t('see all dick raters →')}</a>\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\n\t\t\t\t<!-- Someone who landed here from a search or a shared link: what the\n\t\t\t\t     site does, in one line, and the two ways in. -->\n\t\t\t\t{#if !data.viewer.isLoggedIn}\n\t\t\t\t\t<div class=\"card\">\n\t\t\t\t\t\t<h3 class=\"card-h\">{t('new here?')}</h3>\n\t\t\t\t\t\t<p class=\"new-copy\">{t('one pic, an honest 0–10 score in 10 seconds. the first one is free.')}</p>\n\t\t\t\t\t\t<a href=\"/\" class=\"new-link new-link--primary\">{t('get your own AI dick rating →')}</a>\n\t\t\t\t\t\t<a href=\"/r\" class=\"new-link\">{t('dick rating by real raters →')}</a>\n\t\t\t\t\t</div>\n\t\t\t\t{/if}\n\t\t\t</aside>\n\t\t</div>\n\t</div>\n</div>\n\n{#if storyViewerOpen && storyGroup}\n\t{#key storyViewerKey}\n\t\t<StoryViewer\n\t\t\tgroups={[storyGroup]}\n\t\t\tstartGroupIndex={0}\n\t\t\tstartStoryIndex={storyStartIndex}\n\t\t\tviewerLoggedIn={data.viewer.isLoggedIn}\n\t\t\tonclose={() => (storyViewerOpen = false)}\n\t\t\tonview={markStoryViewed}\n\t\t/>\n\t{/key}\n{/if}\n\n{#if data.viewer.isOwn}\n\t<VerifyModal\n\t\topen={verifyOpen}\n\t\tonclose={() => (verifyOpen = false)}\n\t\tonverified={() => invalidateAll()}\n\t/>\n{/if}\n\n<!-- SEND A GIFT — single elegant trigger → chooser (Pro plan / tokens) -->\n{#if data.viewer.isLoggedIn && !data.viewer.isOwn && !p.isBanned && !p.isUnderReview}\n\t<div class=\"gift-fab-wrap\" class:is-away={ratecardInView}>\n\t\t<button class=\"gift-fab\" class:is-open={giftExpanded} onclick={() => (giftOpen = true)} aria-label={t('send a gift')}>\n\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><polyline points=\"20 12 20 22 4 22 4 12\" /><rect x=\"2\" y=\"7\" width=\"20\" height=\"5\" /><line x1=\"12\" y1=\"22\" x2=\"12\" y2=\"7\" /><path d=\"M12 7H7.5a2.5 2.5 0 0 1 0-5C11 2 12 7 12 7z\" /><path d=\"M12 7h4.5a2.5 2.5 0 0 0 0-5C13 2 12 7 12 7z\" /></svg>\n\t\t\t<span class=\"gift-fab-label\">{t('send a gift')}</span>\n\t\t</button>\n\t</div>\n\n\t{#if giftOpen}\n\t\t<!-- svelte-ignore a11y_click_events_have_key_events a11y_no_static_element_interactions -->\n\t\t<div\n\t\t\tclass=\"gift-modal-backdrop\"\n\t\t\tonclick={(e) => {\n\t\t\t\tif (e.target === e.currentTarget) closeGift();\n\t\t\t}}\n\t\t>\n\t\t\t<div class=\"gift-modal\" role=\"dialog\" aria-modal=\"true\">\n\t\t\t\t<button class=\"gift-modal-x\" onclick={closeGift} aria-label={t('close')}>\n\t\t\t\t\t<svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\"><path d=\"M6 6l12 12M18 6L6 18\" /></svg>\n\t\t\t\t</button>\n\n\t\t\t\t{#if giftDone}\n\t\t\t\t\t<div class=\"gift-success\">\n\t\t\t\t\t\t<span class=\"gift-success-ring\">\n\t\t\t\t\t\t\t<svg width=\"26\" height=\"26\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 6L9 17l-5-5\" /></svg>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t\t<p class=\"gift-success-title\">{t('gift sent')}</p>\n\t\t\t\t\t\t<p class=\"gift-success-sub\">\n\t\t\t\t\t\t\t{giftDone === 'pro'\n\t\t\t\t\t\t\t\t? t('@{name} got 30 days of Pro.', { name: p.nickname })\n\t\t\t\t\t\t\t\t: t('@{name} got 30 tokens.', { name: p.nickname })}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t\t<button class=\"gift-cta-done\" onclick={closeGift}>{t('done')}</button>\n\t\t\t\t\t</div>\n\t\t\t\t{:else}\n\t\t\t\t\t<p class=\"gift-modal-eyebrow\">{t('send a gift')}</p>\n\t\t\t\t\t<h3 class=\"gift-modal-title\">{t('treat @{name}', { name: p.nickname })}</h3>\n\n\t\t\t\t\t<div class=\"gift-options\">\n\t\t\t\t\t\t<button class=\"gift-opt\" onclick={() => sendGift('pro')} disabled={!!giftBusy}>\n\t\t\t\t\t\t\t<span class=\"gift-opt-emblem gift-opt-emblem--pro\">\n\t\t\t\t\t\t\t\t<svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"currentColor\" aria-hidden=\"true\"><path d=\"M3 7l4.5 4L12 4l4.5 7L21 7l-1.6 11H4.6z\" /></svg>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"gift-opt-text\">\n\t\t\t\t\t\t\t\t<span class=\"gift-opt-name\">{t('Pro plan')}</span>\n\t\t\t\t\t\t\t\t<span class=\"gift-opt-sub\">{t('30 days of unlimited')}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"gift-opt-cost\">\n\t\t\t\t\t\t\t\t{#if giftBusy === 'pro'}\n\t\t\t\t\t\t\t\t\t{t('sending…')}\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<TokenCoin size={15} />{GIFT_PRO_TOKEN_COST}\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\n\t\t\t\t\t\t<button class=\"gift-opt\" onclick={() => sendGift('tokens')} disabled={!!giftBusy}>\n\t\t\t\t\t\t\t<span class=\"gift-opt-emblem gift-opt-emblem--tok\"><TokenCoin size={20} /></span>\n\t\t\t\t\t\t\t<span class=\"gift-opt-text\">\n\t\t\t\t\t\t\t\t<span class=\"gift-opt-name\">{t('30 tokens')}</span>\n\t\t\t\t\t\t\t\t<span class=\"gift-opt-sub\">{t('straight to their balance')}</span>\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t\t<span class=\"gift-opt-cost\">\n\t\t\t\t\t\t\t\t{#if giftBusy === 'tokens'}\n\t\t\t\t\t\t\t\t\t{t('sending…')}\n\t\t\t\t\t\t\t\t{:else}\n\t\t\t\t\t\t\t\t\t<TokenCoin size={15} />30\n\t\t\t\t\t\t\t\t{/if}\n\t\t\t\t\t\t\t</span>\n\t\t\t\t\t\t</button>\n\t\t\t\t\t</div>\n\n\t\t\t\t\t{#if giftError}\n\t\t\t\t\t\t<p class=\"gift-modal-err\">{giftError}</p>\n\t\t\t\t\t{/if}\n\t\t\t\t{/if}\n\t\t\t</div>\n\t\t</div>\n\t{/if}\n\n<BuyTokensModal\n\topen={buyTokensOpen}\n\tonclose={() => (buyTokensOpen = false)}\n\treason={buyTokensReason}\n\tsuccessPath={`/u/${p.nickname}?gift=1`}\n\tsource=\"profile_gift\"\n/>\n\n<!-- RAT-462: two ways into the conversation. The plain message is untouched —\n\t it's the same navigation the button always did. -->\n{#if msgSheetOpen}\n\t<button type=\"button\" class=\"msg-backdrop\" aria-label={t('close')} onclick={() => (msgSheetOpen = false)}></button>\n\t<div class=\"msg-sheet\" role=\"dialog\" aria-modal=\"true\">\n\t\t<p class=\"msg-head\">{t('message')} <strong>@{p.nickname}</strong></p>\n\n\t\t<a href={chatHref} class=\"msg-opt\" onclick={() => (msgSheetOpen = false)}>\n\t\t\t<span class=\"msg-opt-body\">\n\t\t\t\t<span class=\"msg-opt-title\">{t('just message')}</span>\n\t\t\t\t<span class=\"msg-opt-sub\">{t('go straight to the chat')}</span>\n\t\t\t</span>\n\t\t\t<span class=\"msg-opt-arrow\" aria-hidden=\"true\">→</span>\n\t\t</a>\n\n\t\t<button\n\t\t\ttype=\"button\"\n\t\t\tclass=\"msg-opt msg-opt--tribute\"\n\t\t\tonclick={() => {\n\t\t\t\tmsgSheetOpen = false;\n\t\t\t\ttributeOpen = true;\n\t\t\t}}\n\t\t>\n\t\t\t<span class=\"msg-opt-body\">\n\t\t\t\t<span class=\"msg-opt-title\">{t('message with tokens')}</span>\n\t\t\t\t<span class=\"msg-opt-sub\">{t(TRIBUTE_REPLY_RATE_COPY)} · {t('every token goes to them')}</span>\n\t\t\t</span>\n\t\t\t<span class=\"msg-opt-coin\" aria-hidden=\"true\"><TokenCoin size={16} /></span>\n\t\t</button>\n\n\t\t<button type=\"button\" class=\"msg-cancel\" onclick={() => (msgSheetOpen = false)}>{t('cancel')}</button>\n\t</div>\n{/if}\n\n<TipSheet\n\topen={tributeOpen}\n\tnickname={p.nickname ?? ''}\n\tonclose={() => (tributeOpen = false)}\n\tonpick={sendTribute}\n\tbusy={tributeBusy}\n\terror={tributeError}\n\tcompose\n\tdesc={t('they keep every token — the message goes with it')}\n/>\n{/if}\n\n<style>\n\t/* ── page shell (mock 1:1) ─────────────────────────────────────── */\n\t.page {\n\t\tmax-width: 1000px;\n\t\tmargin: 0 auto;\n\t\t/* clear the fixed navbar (h-16 = 64px) so the cover doesn't slip behind it */\n\t\tpadding-top: 64px;\n\t\tmin-height: 100vh;\n\t}\n\t@media (min-width: 1024px) {\n\t\t.page {\n\t\t\tpadding-top: 88px;\n\t\t}\n\t}\n\n\t/* COVER */\n\t.cover {\n\t\tposition: relative;\n\t\theight: 220px;\n\t\toverflow: hidden;\n\t\tbackground:\n\t\t\tradial-gradient(120% 80% at 70% 30%, rgba(99, 102, 241, 0.16), transparent 60%),\n\t\t\tradial-gradient(120% 80% at 20% 70%, rgba(124, 58, 237, 0.18), transparent 60%),\n\t\t\tlinear-gradient(135deg, #14121f 0%, #0c0c0c 100%);\n\t}\n\t.cover-img {\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t}\n\t.cover-fade {\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tbackground: linear-gradient(to bottom, rgba(12, 12, 12, 0.1) 30%, var(--color-bg));\n\t\tpointer-events: none;\n\t}\n\n\t.body {\n\t\tpadding: 0 20px 80px;\n\t}\n\t.cols {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: minmax(0, 1fr) 300px;\n\t\tgap: 40px;\n\t\talign-items: start;\n\t}\n\t.main-col {\n\t\tmin-width: 0;\n\t}\n\n\t/* ── identity ──────────────────────────────────────────────────── */\n\t.head {\n\t\tposition: relative;\n\t\tmargin-top: -54px;\n\t}\n\t.avatar {\n\t\twidth: 108px;\n\t\theight: 108px;\n\t\tborder-radius: 50%;\n\t\tborder: 4px solid var(--color-bg);\n\t\tbackground: linear-gradient(135deg, #4a4a55, #232329);\n\t\tposition: relative;\n\t\tpadding: 0;\n\t\tdisplay: block;\n\t}\n\t.avatar img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tdisplay: block;\n\t\tborder-radius: 50%;\n\t}\n\t.avatar .ph {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 800;\n\t\tfont-size: 42px;\n\t\tcolor: #fff;\n\t}\n\t/* Story live: tappable, thin accent ring + pointer. Greys when all viewed. */\n\t.avatar--story {\n\t\tcursor: pointer;\n\t\tbox-shadow:\n\t\t\t0 0 0 2px var(--color-bg),\n\t\t\t0 0 0 4px var(--color-accent);\n\t\ttransition: transform 0.15s;\n\t}\n\t.avatar--story:hover {\n\t\ttransform: scale(1.02);\n\t}\n\t.avatar--viewed {\n\t\tbox-shadow:\n\t\t\t0 0 0 2px var(--color-bg),\n\t\t\t0 0 0 4px #3a3a3a;\n\t}\n\t.avatar .online {\n\t\tposition: absolute;\n\t\tright: 6px;\n\t\tbottom: 6px;\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder-radius: 50%;\n\t\tbackground: var(--color-green);\n\t\tborder: 3px solid var(--color-bg);\n\t}\n\n\t.name-row {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 10px;\n\t\tflex-wrap: wrap;\n\t\tmargin-top: 16px;\n\t}\n\t/* all badges sit in one cluster with a tight, uniform gap — the 10px name-row\n\t   gap only separates the nickname from the cluster, not badge-from-badge. */\n\t.badges {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\tgap: 6px;\n\t}\n\t.name-row .display {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 800;\n\t\tfont-size: 32px;\n\t\tline-height: 1;\n\t\tletter-spacing: -0.03em;\n\t\tmargin: 0;\n\t\toverflow-wrap: anywhere;\n\t}\n\t.badge {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t\tborder-radius: 999px;\n\t\tpadding: 4px 10px;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 11px;\n\t\tfont-weight: 700;\n\t\tletter-spacing: 0.02em;\n\t\ttext-decoration: none;\n\t\tline-height: 1;\n\t}\n\t.badge-banned {\n\t\tbackground: var(--color-coral, #ff4d6d);\n\t\tcolor: #fff;\n\t\ttext-transform: uppercase;\n\t\tfont-size: 10px;\n\t\tletter-spacing: 0.08em;\n\t}\n\t.badge-review {\n\t\tbackground: color-mix(in srgb, #f59e0b 16%, transparent);\n\t\tcolor: #fbbf24;\n\t\ttext-transform: uppercase;\n\t\tfont-size: 10px;\n\t\tletter-spacing: 0.08em;\n\t}\n\t.badge-rater {\n\t\tbackground: color-mix(in srgb, var(--color-green) 14%, transparent);\n\t\tcolor: var(--color-green);\n\t}\n\t/* contest wins — enamel-pin chip, matches the UserBadge style */\n\t.champ-chip {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t\ttext-decoration: none;\n\t\tline-height: 0;\n\t\ttransition: opacity 0.15s;\n\t}\n\t.champ-chip:hover {\n\t\topacity: 0.82;\n\t}\n\t.champ-emblem {\n\t\tposition: relative;\n\t\tdisplay: inline-grid;\n\t\tplace-items: center;\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tborder-radius: 5px;\n\t\toverflow: hidden;\n\t\tbackground: linear-gradient(155deg, #ffd27a, #f59e0b 52%, #b45309);\n\t\tbox-shadow:\n\t\t\t0 1px 2px rgba(0, 0, 0, 0.55),\n\t\t\tinset 0 0 0 1px rgba(255, 255, 255, 0.22);\n\t}\n\t.champ-emblem svg {\n\t\tposition: relative;\n\t\tz-index: 1;\n\t\twidth: 64%;\n\t\theight: 64%;\n\t\tcolor: #3a2000;\n\t\tfilter: drop-shadow(0 0.5px 0.5px rgba(0, 0, 0, 0.3));\n\t}\n\t.champ-emblem::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tbackground: linear-gradient(\n\t\t\t180deg,\n\t\t\trgba(255, 255, 255, 0.42),\n\t\t\trgba(255, 255, 255, 0.08) 48%,\n\t\t\ttransparent 60%\n\t\t);\n\t\tpointer-events: none;\n\t}\n\t.badge-champ:hover {\n\t\topacity: 0.85;\n\t}\n\n\t.meta {\n\t\tmargin-top: 8px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 8px;\n\t\tfont-size: 13.5px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.pres {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 6px;\n\t}\n\t.pres--online,\n\t.meta .pres:has(.pdot) {\n\t\tcolor: var(--color-green);\n\t\tfont-weight: 600;\n\t}\n\t.pdot {\n\t\twidth: 7px;\n\t\theight: 7px;\n\t\tborder-radius: 50%;\n\t\tbackground: var(--color-green);\n\t}\n\t.bio {\n\t\tmargin-top: 14px;\n\t\tfont-size: 15px;\n\t\tline-height: 1.55;\n\t\tcolor: color-mix(in srgb, var(--color-text) 82%, var(--color-muted));\n\t\tmax-width: 520px;\n\t\twhite-space: pre-line;\n\t\toverflow-wrap: anywhere;\n\t}\n\t.links { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 12px; }\n\t.lk { display: inline-flex; align-items: center; gap: 7px; height: 30px; padding: 0 11px 0 9px; border-radius: 999px; background: var(--color-surface-2, #1a1a1a); border: 1px solid var(--color-border); color: var(--color-text); text-decoration: none; font-size: 12px; font-weight: 600; transition: border-color 0.15s, background 0.15s; }\n\t.lk:hover { border-color: var(--color-border-strong, #3a3a3a); background: #202020; }\n\t.lk span { max-width: 160px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }\n\t.lk .ext { opacity: 0.45; }\n\t.clan-line {\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 7px;\n\t\tmargin-top: 6px;\n\t\tfont-size: 13px;\n\t\tfont-weight: 700;\n\t\tcolor: var(--color-text);\n\t\ttext-decoration: none;\n\t}\n\t.clan-line:hover .clan-line-name {\n\t\tcolor: var(--color-accent);\n\t}\n\t.clan-line-tag {\n\t\tfont-size: 11px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.06em;\n\t\tcolor: var(--color-accent);\n\t}\n\t.clan-line--none {\n\t\tfont-weight: 400;\n\t\tfont-size: 12px;\n\t\tcolor: color-mix(in srgb, var(--color-muted) 65%, transparent);\n\t}\n\t/* Partner chip: one row under the clan line, never inline with it. */\n\t.partner-row {\n\t\tdisplay: block;\n\t}\n\t.partner-line-heart {\n\t\twidth: 18px;\n\t\theight: 18px;\n\t\tborder-radius: 50%;\n\t\tbackground: var(--color-coral);\n\t\tdisplay: inline-grid;\n\t\tplace-items: center;\n\t\tflex-shrink: 0;\n\t}\n\t.partner-line-heart svg {\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tfill: #fff;\n\t\tdisplay: block;\n\t}\n\t.partner-line:hover .clan-line-name {\n\t\tcolor: var(--color-coral);\n\t}\n\t.partner-line-since {\n\t\tfont-size: 11px;\n\t\tfont-weight: 500;\n\t\tcolor: var(--color-muted);\n\t}\n\t.xp {\n\t\tmargin-top: 16px;\n\t\tmax-width: 460px;\n\t}\n\t.xp-top {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 10px;\n\t\tmargin-bottom: 7px;\n\t}\n\t.xp-lvl {\n\t\tbackground: var(--color-accent);\n\t\tcolor: #fff;\n\t\tfont-size: 10px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.06em;\n\t\ttext-transform: uppercase;\n\t\tpadding: 3px 7px;\n\t\tborder-radius: 6px;\n\t}\n\t.xp-meta {\n\t\tfont-size: 11px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.xp-bar {\n\t\theight: 7px;\n\t\tborder-radius: 99px;\n\t\tbackground: var(--color-surface-2);\n\t\toverflow: hidden;\n\t}\n\t.xp-bar > i {\n\t\tdisplay: block;\n\t\theight: 100%;\n\t\tborder-radius: 99px;\n\t\tbackground: var(--color-accent);\n\t}\n\n\t/* stats — rounded bordered box */\n\t.stats {\n\t\tmargin-top: 22px;\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(4, auto);\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 16px;\n\t\tbackground: var(--color-surface);\n\t\toverflow: hidden;\n\t\twidth: fit-content;\n\t}\n\t.stat {\n\t\tpadding: 13px 22px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 2px;\n\t\ttext-decoration: none;\n\t\tcolor: inherit;\n\t\ttransition: opacity 0.18s;\n\t}\n\t.stat:hover {\n\t\topacity: 0.72;\n\t}\n\t.stat + .stat {\n\t\tborder-left: 1px solid var(--color-border);\n\t}\n\t.stat .v {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 800;\n\t\tfont-size: 22px;\n\t\tline-height: 1;\n\t\tletter-spacing: -0.025em;\n\t\tfont-variant-numeric: tabular-nums;\n\t}\n\t.stat .v--sm {\n\t\tfont-size: 15px;\n\t\tletter-spacing: 0;\n\t}\n\t.stat .v--green {\n\t\tcolor: var(--color-green);\n\t}\n\t.stat .v--accent {\n\t\tcolor: var(--color-accent);\n\t}\n\t.stat .v--muted {\n\t\tcolor: var(--color-muted);\n\t\topacity: 0.7;\n\t}\n\t.stat .suf {\n\t\tfont-size: 13px;\n\t\tcolor: var(--color-muted);\n\t\tfont-weight: 600;\n\t}\n\t.stat .l {\n\t\tfont-size: 11.5px;\n\t\tcolor: var(--color-muted);\n\t}\n\n\t/* actions */\n\t.actions {\n\t\tmargin-top: 22px;\n\t\tdisplay: flex;\n\t\tgap: 10px;\n\t\tflex-wrap: wrap;\n\t\talign-items: stretch;\n\t}\n\t.report-row {\n\t\tmargin-top: 12px;\n\t\tpadding-top: 10px;\n\t\tborder-top: 1px solid var(--color-border);\n\t}\n\t.actions > :global(*) {\n\t\theight: 46px;\n\t\tmin-width: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tgap: 7px;\n\t\tbox-sizing: border-box;\n\t\tpadding: 0 22px;\n\t\tborder-radius: 12px;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 14px;\n\t\twhite-space: nowrap;\n\t}\n\t.act {\n\t\theight: 46px;\n\t\tpadding: 0 22px;\n\t\tborder-radius: 12px;\n\t\tbackground: var(--color-surface);\n\t\tcolor: var(--color-text);\n\t\tborder: 1px solid var(--color-border);\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 14px;\n\t\tcursor: pointer;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tgap: 7px;\n\t\ttext-decoration: none;\n\t\twhite-space: nowrap;\n\t\ttransition: border-color 0.18s;\n\t}\n\t.act-follow {\n\t\tbackground: var(--color-accent);\n\t\tcolor: #fff;\n\t\tborder-color: var(--color-accent);\n\t}\n\t.act-follow:hover {\n\t\tbackground: color-mix(in srgb, var(--color-accent) 85%, #000);\n\t}\n\t.act-message:hover {\n\t\tborder-color: color-mix(in srgb, var(--color-accent) 45%, var(--color-border));\n\t}\n\n\t/* rater value card — option 2 */\n\t.ratecard {\n\t\tmargin-top: 24px;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 16px;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 16px;\n\t\tbackground: var(--color-surface);\n\t\tpadding: 16px 18px;\n\t\ttext-decoration: none;\n\t\tcolor: inherit;\n\t\ttransition: border-color 0.18s;\n\t}\n\t.ratecard:hover {\n\t\tborder-color: color-mix(in srgb, var(--color-green) 40%, var(--color-border));\n\t}\n\t.ratecard-ic {\n\t\twidth: 46px;\n\t\theight: 46px;\n\t\tborder-radius: 13px;\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t\tbackground: color-mix(in srgb, var(--color-green) 14%, transparent);\n\t\tcolor: var(--color-green);\n\t\tflex-shrink: 0;\n\t}\n\t.ratecard-tx {\n\t\tmin-width: 0;\n\t}\n\t.ratecard-t {\n\t\tdisplay: block;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 16px;\n\t\tcolor: var(--color-text);\n\t}\n\t.ratecard-s {\n\t\tdisplay: block;\n\t\tmargin-top: 3px;\n\t\tfont-size: 12.5px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.ratecard-stars {\n\t\tcolor: var(--color-yellow);\n\t\tletter-spacing: 1px;\n\t\tmargin-right: 4px;\n\t}\n\t/* RAT-423 · free vs token-only marker on the rate CTA */\n\t.ratecard-price {\n\t\tdisplay: inline-block;\n\t\tmargin-left: 6px;\n\t\tpadding: 1px 7px;\n\t\tborder-radius: 999px;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 10px;\n\t\tfont-weight: 700;\n\t\tletter-spacing: 0.04em;\n\t\ttext-transform: uppercase;\n\t\tvertical-align: middle;\n\t}\n\t.ratecard-price--free {\n\t\tcolor: var(--color-accent);\n\t\tbackground: color-mix(in srgb, var(--color-accent) 14%, transparent);\n\t}\n\t.ratecard-price--paid {\n\t\tcolor: var(--color-yellow);\n\t\tbackground: color-mix(in srgb, var(--color-yellow) 14%, transparent);\n\t\ttext-transform: none;\n\t}\n\t.ratecard-btn {\n\t\tmargin-left: auto;\n\t\tflex-shrink: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 6px;\n\t\tbackground: var(--color-green);\n\t\tcolor: #07120a;\n\t\tborder-radius: 11px;\n\t\tpadding: 10px 16px;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 13.5px;\n\t\ttransition: background 0.18s;\n\t}\n\t.ratecard:hover .ratecard-btn {\n\t\tbackground: color-mix(in srgb, var(--color-green) 88%, #000);\n\t}\n\n\t/* ── tabs ──────────────────────────────────────────────────────── */\n\t.tabs {\n\t\tdisplay: flex;\n\t\tmargin-top: 30px;\n\t\tborder-top: 1px solid var(--color-border);\n\t\tborder-bottom: 1px solid var(--color-border);\n\t\tposition: sticky;\n\t\ttop: 64px;\n\t\tz-index: 10;\n\t\tbackground: var(--color-bg);\n\t}\n\t.tab {\n\t\tflex: 1;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tgap: 7px;\n\t\tpadding: 14px 8px;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 13.5px;\n\t\tcolor: var(--color-muted);\n\t\tbackground: none;\n\t\tborder: none;\n\t\tborder-bottom: 2px solid transparent;\n\t\tcursor: pointer;\n\t\ttransition: color 0.15s;\n\t}\n\t.tab .ti {\n\t\tdisplay: inline-flex;\n\t\topacity: 0.85;\n\t}\n\t.tab-badge {\n\t\tfont-size: 10px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.02em;\n\t\tcolor: var(--color-muted);\n\t\tbackground: rgba(255, 255, 255, 0.06);\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 999px;\n\t\tpadding: 1px 6px;\n\t\tfont-variant-numeric: tabular-nums;\n\t}\n\t.tab--active .tab-badge {\n\t\tcolor: var(--color-text);\n\t}\n\t.tab--active {\n\t\tcolor: var(--color-text);\n\t\tborder-bottom-color: var(--color-text);\n\t}\n\t.tab--rater.tab--active {\n\t\tcolor: var(--color-green);\n\t\tborder-bottom-color: var(--color-green);\n\t}\n\t.tab--albums.tab--active {\n\t\tcolor: var(--color-purple);\n\t\tborder-bottom-color: var(--color-purple);\n\t}\n\n\t/* ── content grid ──────────────────────────────────────────────── */\n\t.grid {\n\t\tmargin-top: 16px;\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(3, 1fr);\n\t\tgap: 8px;\n\t}\n\t.tile {\n\t\tposition: relative;\n\t\taspect-ratio: 1;\n\t\toverflow: hidden;\n\t\tborder-radius: 10px;\n\t\tbackground: var(--color-surface);\n\t\tdisplay: block;\n\t\ttext-decoration: none;\n\t\tcolor: var(--color-text);\n\t}\n\t.tile-img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tdisplay: block;\n\t\ttransition: transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);\n\t}\n\t.tile:hover .tile-img {\n\t\ttransform: scale(1.04);\n\t}\n\t.tile-fallback {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tcolor: var(--color-muted);\n\t\tbackground: var(--color-surface-2);\n\t}\n\t.tile-text {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tpadding: 10px;\n\t\tbackground: var(--color-surface-2);\n\t}\n\t/* Tier list tile: mini S–D color stripes + the list title. */\n\t.tile-tierlist {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: space-between;\n\t\tgap: 8px;\n\t\tpadding: 12px;\n\t\tbackground: var(--color-surface-2);\n\t}\n\t.tile-tierlist-bars {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 4px;\n\t}\n\t.tile-tierlist-bars span {\n\t\tdisplay: block;\n\t\theight: 6px;\n\t\tborder-radius: 2px;\n\t}\n\t.tile-tierlist-bars span:nth-child(1) { width: 55%; }\n\t.tile-tierlist-bars span:nth-child(2) { width: 75%; }\n\t.tile-tierlist-bars span:nth-child(3) { width: 45%; }\n\t.tile-tierlist-bars span:nth-child(4) { width: 65%; }\n\t.tile-tierlist-bars span:nth-child(5) { width: 35%; }\n\t.tile-tierlist-title {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 0.8rem;\n\t\tline-height: 1.2;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 2;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t}\n\t.tile-text-body {\n\t\tfont-weight: 700;\n\t\tfont-size: 0.8rem;\n\t\tline-height: 1.25;\n\t\tcolor: var(--color-text);\n\t\ttext-align: center;\n\t\tdisplay: -webkit-box;\n\t\t-webkit-line-clamp: 5;\n\t\tline-clamp: 5;\n\t\t-webkit-box-orient: vertical;\n\t\toverflow: hidden;\n\t\tword-break: break-word;\n\t}\n\t.tile-score {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tgap: 2px;\n\t\tbackground:\n\t\t\tradial-gradient(60% 50% at 50% 35%, rgba(59, 130, 246, 0.22), transparent 70%),\n\t\t\tlinear-gradient(160deg, #0c1322 0%, #0a0a0a 100%);\n\t\tcolor: var(--color-text);\n\t}\n\t.tile-score--hype {\n\t\tbackground:\n\t\t\tradial-gradient(60% 50% at 50% 35%, var(--color-accent-light), transparent 70%),\n\t\t\tlinear-gradient(160deg, #0c1f12 0%, #0a0a0a 100%);\n\t}\n\t.tile-score-num {\n\t\tfont-family: var(--font-display);\n\t\tfont-size: clamp(28px, 9vw, 36px);\n\t\tfont-weight: 800;\n\t\tletter-spacing: -0.04em;\n\t\tline-height: 1;\n\t\tfont-variant-numeric: tabular-nums;\n\t}\n\t.tile-score-suf {\n\t\tfont-size: 10px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.tile-score-mode {\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 9px;\n\t\tfont-weight: 700;\n\t\tletter-spacing: 0.18em;\n\t\ttext-transform: uppercase;\n\t\tcolor: var(--color-muted);\n\t\tmargin-top: 4px;\n\t}\n\t.tile-corner {\n\t\tposition: absolute;\n\t\ttop: 7px;\n\t\tright: 7px;\n\t\tcolor: #fff;\n\t\tfilter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.6));\n\t\tdisplay: inline-flex;\n\t}\n\t.src-chip {\n\t\tposition: absolute;\n\t\ttop: 7px;\n\t\tleft: 7px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 3px;\n\t\theight: 18px;\n\t\tpadding: 0 7px;\n\t\tborder-radius: 9px;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 9px;\n\t\tfont-weight: 700;\n\t\tletter-spacing: 0.04em;\n\t\ttext-transform: lowercase;\n\t\tbackdrop-filter: blur(6px);\n\t}\n\n\t/* albums grid */\n\t.albums-grid {\n\t\tmargin-top: 16px;\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(2, 1fr);\n\t\tgap: 12px;\n\t}\n\t@media (min-width: 640px) {\n\t\t.albums-grid {\n\t\t\tgrid-template-columns: repeat(3, 1fr);\n\t\t}\n\t}\n\t/* creator boost — strong \"create / manage album\" card */\n\t.album-boost {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 14px;\n\t\tmargin-top: 16px;\n\t\tpadding: 16px 18px;\n\t\tborder: 1px solid color-mix(in srgb, var(--color-purple) 30%, var(--color-border));\n\t\tborder-radius: 16px;\n\t\tbackground: linear-gradient(\n\t\t\t150deg,\n\t\t\tcolor-mix(in srgb, var(--color-purple) 12%, var(--color-surface)),\n\t\t\tvar(--color-surface)\n\t\t);\n\t\ttext-decoration: none;\n\t\tcolor: inherit;\n\t\ttransition: border-color 0.18s;\n\t}\n\t.album-boost:hover {\n\t\tborder-color: color-mix(in srgb, var(--color-purple) 50%, transparent);\n\t}\n\t.album-boost .ab-ic {\n\t\twidth: 46px;\n\t\theight: 46px;\n\t\tborder-radius: 13px;\n\t\tdisplay: grid;\n\t\tplace-items: center;\n\t\tbackground: color-mix(in srgb, var(--color-purple) 16%, transparent);\n\t\tcolor: var(--color-purple);\n\t\tflex-shrink: 0;\n\t}\n\t.album-boost .ab-tx {\n\t\tmin-width: 0;\n\t\tflex: 1;\n\t}\n\t.album-boost .ab-t {\n\t\tdisplay: block;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 15px;\n\t\tcolor: var(--color-text);\n\t}\n\t.album-boost .ab-s {\n\t\tdisplay: block;\n\t\tmargin-top: 2px;\n\t\tfont-size: 12.5px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.album-boost .ab-btn {\n\t\tmargin-left: auto;\n\t\tflex-shrink: 0;\n\t\tbackground: var(--color-purple);\n\t\tcolor: #fff;\n\t\tborder-radius: 11px;\n\t\tpadding: 10px 16px;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 13px;\n\t}\n\t.collection-h {\n\t\tmargin-top: 22px;\n\t\tpadding: 0 2px 10px;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 11px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.18em;\n\t\ttext-transform: uppercase;\n\t\tcolor: var(--color-muted);\n\t\tborder-bottom: 1px solid var(--color-border);\n\t}\n\t@media (max-width: 480px) {\n\t\t.album-boost .ab-btn {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t/* empty states */\n\t.empty-state {\n\t\tmargin-top: 16px;\n\t\tpadding: 48px 24px;\n\t\ttext-align: center;\n\t\tcolor: var(--color-muted);\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 16px;\n\t\tbackground: var(--color-surface);\n\t}\n\t.empty-title {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 15px;\n\t\tcolor: var(--color-text);\n\t\tmargin: 0 0 6px;\n\t}\n\t.empty-sub {\n\t\tfont-size: 13px;\n\t\tline-height: 1.5;\n\t\tmax-width: 320px;\n\t\tmargin: 0 auto;\n\t\tcolor: var(--color-muted);\n\t}\n\n\t/* ── reviews (mock score-led) ──────────────────────────────────── */\n\t.reviews {\n\t\tmargin-top: 16px;\n\t}\n\t.scorecard {\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 18px;\n\t\tbackground: var(--color-surface);\n\t\tpadding: 24px;\n\t\tdisplay: grid;\n\t\tgrid-template-columns: auto 1fr;\n\t\tgap: 30px;\n\t\talign-items: center;\n\t}\n\t.score-big {\n\t\ttext-align: center;\n\t}\n\t.score-big .n {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 800;\n\t\tfont-size: 56px;\n\t\tline-height: 1;\n\t\tletter-spacing: -0.04em;\n\t\tcolor: var(--color-green);\n\t}\n\t.score-big .s {\n\t\tcolor: var(--color-muted);\n\t\tfont-size: 14px;\n\t}\n\t.score-big .ap {\n\t\tmargin-top: 8px;\n\t\tfont-size: 12px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.bars {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 10px;\n\t}\n\t.bar {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 92px 1fr 34px;\n\t\talign-items: center;\n\t\tgap: 12px;\n\t}\n\t.bar .bl {\n\t\tfont-size: 12.5px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.bar .track {\n\t\theight: 6px;\n\t\tborder-radius: 3px;\n\t\tbackground: var(--color-surface-2);\n\t\toverflow: hidden;\n\t}\n\t.bar .fill {\n\t\theight: 100%;\n\t\tbackground: var(--color-green);\n\t\tborder-radius: 3px;\n\t}\n\t.bar .bv {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 12.5px;\n\t\ttext-align: right;\n\t\tfont-variant-numeric: tabular-nums;\n\t}\n\t.reviewlist {\n\t\tmargin-top: 14px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 1px;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 16px;\n\t\toverflow: hidden;\n\t}\n\t.review {\n\t\tpadding: 16px 18px;\n\t\tbackground: var(--color-surface);\n\t}\n\t.review .rh {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 10px;\n\t}\n\t.rstars {\n\t\tcolor: var(--color-yellow);\n\t\tfont-size: 13px;\n\t\tletter-spacing: 1px;\n\t}\n\t.rstars span:not(.on) {\n\t\tcolor: var(--color-border);\n\t}\n\t.review .rm {\n\t\tfont-size: 12px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.review .rb {\n\t\tmargin: 7px 0 0;\n\t\tfont-size: 14px;\n\t\tcolor: color-mix(in srgb, var(--color-text) 85%, var(--color-muted));\n\t\tline-height: 1.5;\n\t}\n\n\t/* ── sidebar ───────────────────────────────────────────────────── */\n\t.side {\n\t\tposition: sticky;\n\t\ttop: 80px;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 16px;\n\t\tpadding-top: 24px;\n\t}\n\t.card {\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 18px;\n\t\tbackground: var(--color-surface);\n\t\tpadding: 18px;\n\t}\n\t.card-h {\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 12px;\n\t\tfont-weight: 800;\n\t\tletter-spacing: 0.16em;\n\t\ttext-transform: uppercase;\n\t\tcolor: var(--color-muted);\n\t\tmargin: 0 0 14px;\n\t}\n\t.about-row {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 10px;\n\t\tfont-size: 13.5px;\n\t\tpadding: 6px 0;\n\t}\n\t.about-row svg {\n\t\tcolor: var(--color-muted);\n\t\tflex-shrink: 0;\n\t}\n\t.about-row .ak {\n\t\tcolor: var(--color-muted);\n\t}\n\t.about-row .av-v {\n\t\tmargin-left: auto;\n\t\tfont-weight: 600;\n\t\tfont-variant-numeric: tabular-nums;\n\t}\n\t.about-row .av-v--accent {\n\t\tcolor: var(--color-accent);\n\t}\n\t.sr {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 11px;\n\t\tpadding: 9px 0;\n\t\ttext-decoration: none;\n\t\tcolor: inherit;\n\t}\n\t.sr-av {\n\t\twidth: 38px;\n\t\theight: 38px;\n\t\tborder-radius: 50%;\n\t\tbackground: linear-gradient(135deg, #3a3a3a, #1c1c1c);\n\t\tposition: relative;\n\t\tflex-shrink: 0;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 14px;\n\t\tcolor: #fff;\n\t}\n\t.sr-av img {\n\t\twidth: 100%;\n\t\theight: 100%;\n\t\tobject-fit: cover;\n\t\tborder-radius: 50%;\n\t}\n\t.sr-dot {\n\t\tposition: absolute;\n\t\tright: 0;\n\t\tbottom: 0;\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tborder-radius: 50%;\n\t\tbackground: var(--color-green);\n\t\tborder: 2px solid var(--color-surface);\n\t}\n\t.sr-n {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 13.5px;\n\t}\n\t.sr-m {\n\t\tfont-size: 11.5px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.sr-go {\n\t\tmargin-left: auto;\n\t\tfont-size: 12px;\n\t\tcolor: var(--color-accent);\n\t\tfont-weight: 600;\n\t}\n\t.seeall {\n\t\tdisplay: block;\n\t\ttext-align: center;\n\t\tmargin-top: 8px;\n\t\tfont-size: 12.5px;\n\t\tcolor: var(--color-accent);\n\t\tfont-weight: 600;\n\t\ttext-decoration: none;\n\t}\n\t.new-copy {\n\t\tmargin: 0 0 6px;\n\t\tfont-size: 13.5px;\n\t\tline-height: 1.5;\n\t\tcolor: var(--color-muted);\n\t}\n\t.new-link {\n\t\tdisplay: block;\n\t\tpadding: 10px 0;\n\t\tfont-size: 13.5px;\n\t\tfont-weight: 600;\n\t\tcolor: var(--color-text);\n\t\ttext-decoration: none;\n\t}\n\t.new-link--primary {\n\t\tcolor: var(--color-accent);\n\t}\n\t.new-link + .new-link {\n\t\tborder-top: 1px solid var(--color-border);\n\t}\n\n\t/* ── responsive ────────────────────────────────────────────────── */\n\t@media (min-width: 1024px) {\n\t\t.cover {\n\t\t\tborder-radius: 18px;\n\t\t\tmargin-top: 8px;\n\t\t}\n\t}\n\t@media (max-width: 1023px) {\n\t\t.cols {\n\t\t\tgrid-template-columns: 1fr;\n\t\t\tgap: 0;\n\t\t}\n\t\t.side {\n\t\t\tposition: static;\n\t\t\tmargin-top: 32px;\n\t\t\tpadding-top: 0;\n\t\t}\n\t}\n\t@media (max-width: 560px) {\n\t\t.cover {\n\t\t\theight: 150px;\n\t\t}\n\t\t.body {\n\t\t\tpadding: 0 14px 90px;\n\t\t}\n\t\t.head {\n\t\t\tmargin-top: -44px;\n\t\t}\n\t\t.avatar {\n\t\t\twidth: 86px;\n\t\t\theight: 86px;\n\t\t}\n\t\t.name-row .display {\n\t\t\tfont-size: 26px;\n\t\t}\n\t\t.stats {\n\t\t\twidth: 100%;\n\t\t\tgrid-template-columns: repeat(4, 1fr);\n\t\t}\n\t\t.stat {\n\t\t\tpadding: 12px 4px;\n\t\t\talign-items: center;\n\t\t\ttext-align: center;\n\t\t}\n\t\t.actions {\n\t\t\tgap: 8px;\n\t\t}\n\t\t.actions > :global(.act-follow),\n\t\t.actions > :global(*:first-child),\n\t\t.act-message {\n\t\t\tflex: 1;\n\t\t}\n\t\t.tabs {\n\t\t\tmargin-left: -14px;\n\t\t\tmargin-right: -14px;\n\t\t\tpadding-left: 14px;\n\t\t\tpadding-right: 14px;\n\t\t}\n\t\t.tab .tl {\n\t\t\tdisplay: none;\n\t\t}\n\t\t.tab .ti {\n\t\t\topacity: 1;\n\t\t}\n\t\t.scorecard {\n\t\t\tgrid-template-columns: 1fr;\n\t\t\tgap: 20px;\n\t\t\ttext-align: center;\n\t\t}\n\t\t.bar {\n\t\t\tgrid-template-columns: 80px 1fr 30px;\n\t\t}\n\t\t.ratecard-btn-l {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\n\t.load-more {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\tmargin-top: 0.9rem;\n\t\tpadding: 0.7rem;\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 12px;\n\t\tbackground: var(--color-surface);\n\t\tcolor: var(--color-muted);\n\t\tfont: inherit;\n\t\tfont-size: 0.85rem;\n\t\tfont-weight: 650;\n\t\tcursor: pointer;\n\t}\n\t.load-more:hover {\n\t\tcolor: var(--color-text);\n\t}\n\t.load-more:disabled {\n\t\topacity: 0.6;\n\t\tcursor: default;\n\t}\n\n\t/* ── send a gift · floating trigger + chooser modal ─────────────── */\n\t.gift-fab-wrap {\n\t\tposition: fixed;\n\t\tleft: 50%;\n\t\ttransform: translateX(-50%);\n\t\t/* lift above the mobile bottom nav (~56px body + iOS safe area) */\n\t\tbottom: calc(env(safe-area-inset-bottom, 0px) + 5.75rem);\n\t\tz-index: 40;\n\t\tpointer-events: none;\n\t}\n\t@media (min-width: 768px) {\n\t\t/* desktop: the gift action lives inline in the .actions row instead */\n\t\t.gift-fab-wrap {\n\t\t\tdisplay: none;\n\t\t}\n\t}\n\t.gift-fab-wrap {\n\t\ttransition:\n\t\t\topacity 0.2s ease,\n\t\t\ttransform 0.25s cubic-bezier(0.2, 0.8, 0.2, 1);\n\t}\n\t/* RAT-520: out of the rate card's way while it's on screen. */\n\t.gift-fab-wrap.is-away {\n\t\topacity: 0;\n\t\ttransform: translate(-50%, 16px);\n\t}\n\t.gift-fab-wrap.is-away .gift-fab {\n\t\tpointer-events: none;\n\t}\n\t/* desktop inline gift trigger (hidden on mobile — the FAB covers mobile) */\n\t.gift-act {\n\t\tdisplay: none;\n\t}\n\t.gift-act svg {\n\t\tcolor: var(--color-accent);\n\t}\n\t@media (min-width: 768px) {\n\t\t.gift-act {\n\t\t\tdisplay: inline-flex;\n\t\t}\n\t}\n\t.gift-fab {\n\t\tpointer-events: auto;\n\t\tposition: relative;\n\t\toverflow: hidden;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\theight: 46px;\n\t\tpadding: 0 15px;\n\t\tborder-radius: 999px;\n\t\tbackground: rgba(20, 20, 20, 0.85);\n\t\tbackdrop-filter: blur(14px) saturate(1.4);\n\t\tborder: 1px solid var(--color-border);\n\t\tbox-shadow: 0 8px 28px rgba(0, 0, 0, 0.4);\n\t\tcolor: var(--color-text);\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 600;\n\t\tfont-size: 14px;\n\t\tcursor: pointer;\n\t\twhite-space: nowrap;\n\t\ttransition:\n\t\t\ttransform 0.18s,\n\t\t\tborder-color 0.18s,\n\t\t\tbackground 0.18s;\n\t}\n\t.gift-fab svg {\n\t\tcolor: var(--color-accent);\n\t\tflex-shrink: 0;\n\t}\n\t/* collapsed → expands the label open (auto on load + on hover) */\n\t.gift-fab-label {\n\t\tmax-width: 0;\n\t\tmargin-left: 0;\n\t\topacity: 0;\n\t\toverflow: hidden;\n\t\twhite-space: nowrap;\n\t\ttransition:\n\t\t\tmax-width 0.45s cubic-bezier(0.4, 0, 0.2, 1),\n\t\t\tmargin-left 0.45s cubic-bezier(0.4, 0, 0.2, 1),\n\t\t\topacity 0.3s ease;\n\t}\n\t.gift-fab.is-open .gift-fab-label,\n\t.gift-fab:hover .gift-fab-label {\n\t\tmax-width: 140px;\n\t\tmargin-left: 8px;\n\t\topacity: 1;\n\t}\n\t.gift-fab:hover {\n\t\ttransform: translateY(-1px);\n\t\tborder-color: var(--color-accent);\n\t\tbackground: rgba(26, 26, 26, 0.9);\n\t}\n\t.gift-fab:active {\n\t\ttransform: scale(0.98);\n\t}\n\t/* whisper-soft sheen — elegant, not a loud arcade shimmer */\n\t.gift-fab::after {\n\t\tcontent: '';\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tbackground: linear-gradient(\n\t\t\t105deg,\n\t\t\ttransparent 40%,\n\t\t\trgba(255, 255, 255, 0.1) 50%,\n\t\t\ttransparent 60%\n\t\t);\n\t\ttransform: translateX(-130%);\n\t\tanimation: gift-sheen 4.5s ease-in-out infinite;\n\t\tpointer-events: none;\n\t}\n\t@keyframes gift-sheen {\n\t\t0% {\n\t\t\ttransform: translateX(-130%);\n\t\t}\n\t\t50%,\n\t\t100% {\n\t\t\ttransform: translateX(130%);\n\t\t}\n\t}\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.gift-fab::after {\n\t\t\tanimation: none;\n\t\t}\n\t}\n\n\t.gift-modal-backdrop {\n\t\tposition: fixed;\n\t\tinset: 0;\n\t\tz-index: 100;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tpadding: 20px;\n\t\tbackground: rgba(8, 8, 8, 0.72);\n\t\tbackdrop-filter: blur(6px);\n\t}\n\t.gift-modal {\n\t\tposition: relative;\n\t\twidth: 100%;\n\t\tmax-width: 360px;\n\t\tbackground: var(--color-surface);\n\t\tborder: 1px solid var(--color-border);\n\t\tborder-radius: 22px;\n\t\tpadding: 26px 22px 22px;\n\t\tbox-shadow: 0 24px 70px rgba(0, 0, 0, 0.6);\n\t}\n\t.gift-modal-x {\n\t\tposition: absolute;\n\t\ttop: 14px;\n\t\tright: 14px;\n\t\twidth: 30px;\n\t\theight: 30px;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tborder-radius: 50%;\n\t\tborder: none;\n\t\tbackground: transparent;\n\t\tcolor: var(--color-muted);\n\t\tcursor: pointer;\n\t\ttransition:\n\t\t\tcolor 0.15s,\n\t\t\tbackground 0.15s;\n\t}\n\t.gift-modal-x:hover {\n\t\tcolor: var(--color-text);\n\t\tbackground: rgba(255, 255, 255, 0.06);\n\t}\n\t.gift-modal-eyebrow {\n\t\tfont-family: var(--font-body);\n\t\tfont-size: 11px;\n\t\ttext-transform: uppercase;\n\t\tletter-spacing: 0.18em;\n\t\tcolor: rgba(115, 115, 115, 0.6);\n\t}\n\t.gift-modal-title {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 22px;\n\t\tletter-spacing: -0.02em;\n\t\tmargin-top: 4px;\n\t\tmargin-bottom: 18px;\n\t}\n\t.gift-options {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 10px;\n\t}\n\t.gift-opt {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 13px;\n\t\twidth: 100%;\n\t\tpadding: 13px 14px;\n\t\tborder-radius: 14px;\n\t\tbackground: var(--color-bg);\n\t\tborder: 1px solid var(--color-border);\n\t\tcursor: pointer;\n\t\ttext-align: left;\n\t\ttransition:\n\t\t\tborder-color 0.15s,\n\t\t\ttransform 0.1s;\n\t}\n\t.gift-opt:hover:not(:disabled) {\n\t\tborder-color: rgba(255, 77, 109, 0.4);\n\t}\n\t.gift-opt:active:not(:disabled) {\n\t\ttransform: scale(0.99);\n\t}\n\t.gift-opt:disabled {\n\t\topacity: 0.6;\n\t\tcursor: wait;\n\t}\n\t.gift-opt-emblem {\n\t\twidth: 38px;\n\t\theight: 38px;\n\t\tflex-shrink: 0;\n\t\tdisplay: inline-grid;\n\t\tplace-items: center;\n\t\tborder-radius: 11px;\n\t}\n\t.gift-opt-emblem--pro {\n\t\tbackground: linear-gradient(155deg, #ffe48a, #f5b50a 55%, #c5860a);\n\t\tcolor: #3a2700;\n\t\tbox-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.2);\n\t}\n\t.gift-opt-emblem--tok {\n\t\tbackground: rgba(255, 255, 255, 0.04);\n\t\tborder: 1px solid var(--color-border);\n\t}\n\t.gift-opt-text {\n\t\tflex: 1;\n\t\tmin-width: 0;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 1px;\n\t}\n\t.gift-opt-name {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 15px;\n\t\tcolor: var(--color-text);\n\t}\n\t.gift-opt-sub {\n\t\tfont-size: 12px;\n\t\tcolor: var(--color-muted);\n\t}\n\t.gift-opt-cost {\n\t\tflex-shrink: 0;\n\t\tdisplay: inline-flex;\n\t\talign-items: center;\n\t\tgap: 4px;\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 14px;\n\t\tcolor: var(--color-text);\n\t}\n\t.gift-modal-err {\n\t\tmargin-top: 14px;\n\t\tfont-size: 12px;\n\t\tfont-weight: 500;\n\t\tcolor: var(--color-coral);\n\t\ttext-align: center;\n\t}\n\t.gift-modal-err a {\n\t\tcolor: var(--color-coral);\n\t\ttext-decoration: underline;\n\t}\n\t.gift-success {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: center;\n\t\ttext-align: center;\n\t\tpadding: 10px 0 4px;\n\t}\n\t.gift-success-ring {\n\t\twidth: 52px;\n\t\theight: 52px;\n\t\tdisplay: inline-grid;\n\t\tplace-items: center;\n\t\tborder-radius: 50%;\n\t\tbackground: rgba(34, 197, 94, 0.12);\n\t\tcolor: var(--color-green);\n\t\tmargin-bottom: 14px;\n\t}\n\t.gift-success-title {\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 20px;\n\t}\n\t.gift-success-sub {\n\t\tfont-size: 13px;\n\t\tcolor: var(--color-muted);\n\t\tmargin-top: 4px;\n\t}\n\t.gift-cta-done {\n\t\tmargin-top: 18px;\n\t\twidth: 100%;\n\t\theight: 44px;\n\t\tborder-radius: 12px;\n\t\tborder: 1px solid var(--color-border);\n\t\tbackground: var(--color-bg);\n\t\tcolor: var(--color-text);\n\t\tfont-family: var(--font-display);\n\t\tfont-weight: 700;\n\t\tfont-size: 14px;\n\t\tcursor: pointer;\n\t\ttransition: border-color 0.15s;\n\t}\n\t.gift-cta-done:hover {\n\t\tborder-color: var(--color-muted);\n\t}\n\n\t/* own + unverified: the verified emblem itself, shimmering, sitting in the\n\t   badge cluster as a tap-to-earn CTA. No text — just the badge with a light\n\t   sweep so it reads as \"claim this\". */\n\t.gv-emblem {\n\t\tposition: relative;\n\t\tdisplay: inline-grid;\n\t\tplace-items: center;\n\t\twidth: 16px;\n\t\theight: 16px;\n\t\tflex-shrink: 0;\n\t\tborder-radius: calc(16px * 0.32);\n\t\tborder: none;\n\t\tpadding: 0;\n\t\toverflow: hidden;\n\t\tcursor: pointer;\n\t\tvertical-align: middle;\n\t\tbackground: linear-gradient(155deg, #5eb3ff 0%, #2f7fe0 55%, #1f5fb0 100%);\n\t\tbox-shadow:\n\t\t\t0 1px 2px rgba(0, 0, 0, 0.55),\n\t\t\tinset 0 0 0 1px rgba(255, 255, 255, 0.22);\n\t\tcolor: #fff;\n\t}\n\t.gv-emblem svg {\n\t\tposition: relative;\n\t\tz-index: 1;\n\t\twidth: 66%;\n\t\theight: 66%;\n\t}\n\t.gv-emblem .gv-shine {\n\t\tposition: absolute;\n\t\tinset: 0;\n\t\tbackground: linear-gradient(115deg, transparent 32%, rgba(255, 255, 255, 0.7) 50%, transparent 68%);\n\t\ttransform: translateX(-140%);\n\t\tanimation: gv-shine 2.4s ease-in-out infinite;\n\t\tpointer-events: none;\n\t}\n\t.gv-emblem:hover {\n\t\tfilter: brightness(1.1);\n\t}\n\t@media (prefers-reduced-motion: reduce) {\n\t\t.gv-emblem .gv-shine {\n\t\t\tanimation: none;\n\t\t}\n\t}\n\t@keyframes gv-shine {\n\t\t0% {\n\t\t\ttransform: translateX(-140%);\n\t\t}\n\t\t55%,\n\t\t100% {\n\t\t\ttransform: translateX(160%);\n\t\t}\n\t}\n\n\t/* RAT-462: message-choice sheet. Same bottom-sheet chrome as the tip picker\n\t   so the two feel like one flow on mobile. */\n\t.msg-backdrop {\n\t\tposition: fixed; inset: 0; z-index: 65;\n\t\tbackground: rgba(0, 0, 0, 0.55); backdrop-filter: blur(4px);\n\t\tborder: none; cursor: default;\n\t}\n\t.msg-sheet {\n\t\tposition: fixed; left: 50%; bottom: 0; transform: translateX(-50%); z-index: 66;\n\t\twidth: 100%; max-width: 440px;\n\t\tbackground: var(--color-bg);\n\t\tborder: 1px solid var(--color-border); border-bottom: none;\n\t\tborder-radius: 20px 20px 0 0;\n\t\tpadding: 20px 20px calc(22px + env(safe-area-inset-bottom, 0px));\n\t\tbox-shadow: 0 -16px 40px -10px rgba(0, 0, 0, 0.6);\n\t}\n\t@media (min-width: 480px) {\n\t\t.msg-sheet {\n\t\t\tbottom: auto; top: 50%; transform: translate(-50%, -50%);\n\t\t\tborder-radius: 20px; border-bottom: 1px solid var(--color-border);\n\t\t}\n\t}\n\t.msg-head { font-size: 14px; color: var(--color-muted); margin-bottom: 14px; }\n\t.msg-head strong { font-weight: 600; color: var(--color-text); }\n\t.msg-opt {\n\t\tdisplay: flex; align-items: center; justify-content: space-between; gap: 12px;\n\t\twidth: 100%; padding: 14px 16px; margin-bottom: 10px;\n\t\tborder-radius: 14px; border: 1px solid var(--color-border);\n\t\tbackground: var(--color-surface);\n\t\ttext-align: left; text-decoration: none; cursor: pointer;\n\t\ttransition: border-color 0.15s;\n\t}\n\t.msg-opt:hover { border-color: var(--color-accent); }\n\t.msg-opt--tribute { border-color: color-mix(in srgb, var(--color-yellow) 40%, var(--color-border)); }\n\t.msg-opt-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }\n\t.msg-opt-title { font-family: var(--font-display); font-size: 14px; font-weight: 700; color: var(--color-text); }\n\t.msg-opt-sub { font-size: 12px; color: var(--color-muted); }\n\t.msg-opt-arrow { font-size: 15px; color: var(--color-muted); flex-shrink: 0; }\n\t.msg-opt-coin { display: inline-flex; flex-shrink: 0; }\n\t.msg-cancel {\n\t\twidth: 100%; margin-top: 4px; padding: 6px 0; text-align: center;\n\t\tfont-size: 13px; color: color-mix(in srgb, var(--color-muted) 60%, transparent);\n\t\tbackground: none; border: none; cursor: pointer;\n\t}\n\t.msg-cancel:hover { color: var(--color-muted); }\n</style>\n"],"version":3}