{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4c31-7120-adaf-f3658f291593","file":"DCSXdEL8.mjs","mappings":"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","names":["HOW_LONG","IS_IT_FREE","PHOTO_QUALITY","BANDS","PHOTO_SECTION","what","RULES_SECTION","ROAST_OR_HYPE","SUBJECT_PAGES","RATE_SUBJECT_PATH","plainText","s","textParts","out","last","m","rich","$.noop","$.index","$$anchor","part","a","root_4","$.set_class","link","$.get","$.set_text","text","$.template_effect","text_1","$$render","consequent","alternate","lobby","p","$$props","raterName","$.derived","fill","PRO_MONTHLY_LABEL","RATERS","others","PAGE_RATE_SUBJECTS","jsonLd","jsonLdScript","SITE_URL","seoByPath","f","breadcrumbList","h2","$.head","RateUploader","RateSubjectSwitch","span","$.first_child","fragment_6","text_2","$.child","$.reset","text_3","$.sibling","span_1","text_5","section","fragment_8","div","h2_1","dl","h","div_1","root_10","dt","dd","text_7","h2_2","dl_1","d","div_2","root_11","dt_1","dd_1","text_9","text_10","p_1","h2_3","fragment_9","p_2","consequent_1","node_4","BeatLobby","consequent_2","section_1","div_3","h2_4","p_3","dl_2","b","div_4","root_14","dt_2","dd_2","text_15","text_16","h2_5","p_4","dl_3","$.each","g","div_5","root_15","dt_3","dd_3","text_19","text_20","p_5","root_16","consequent_3","h2_6","node_5","ol","tip","i","li","root_17","span_2","span_3","h2_7","fragment_11","para","p_6","root_19","text_25","h2_8","node_6","div_6","details","root_20","summary","text_27","p_7","node_9","h2_9","ul","r","li_1","root_21","a_1","span_4","span_5","text_28","text_29","p_8","a_2","text_11","text_14","$.set_attribute","text_26"],"sources":["../../../../../../src/lib/rate-subject-pages.ts","../../../../../../src/lib/components/rate/SubjectRaterPage.svelte"],"sourcesContent":["/**\n * Epic R: what /rate-my-boobs, /rate-my-ass and /rate-my-nudes say, below the\n * uploader they share with /rate (SubjectRaterPage.svelte).\n *\n * Each page answers its own searches (Semrush US, 2026-11-01):\n * - boobs: rate my boobs 6.6K, rate my tits 6.6K, ratemyboobs 2.4K, rate my rack\n *   1.6K, rate my titties 880; boob shapes 2.4K and types of boobs 2.9K (KD\n *   22–30); how to take good boob pics 320.\n * - ass: rate my ass 1.3K, ratemyass 1.3K, rate my asshole 480, rate my butt\n *   210; how to take ass pics 480.\n * - nudes: rate my nudes 720, rate my body 590, rate my nude 390; how to take\n *   nudes 2.4K (KD 17), nude poses 2.4K, how to take good nudes 1.6K.\n *\n * The pages rank against TikTok tags, Reddit threads and thin rater sites, and\n * the ones that rank for \"rate my …\" run 1,000–1,400 words, so each page says\n * what a searcher asks before uploading. The text is English only, like the\n * album hubs: the uploader above it and the beat lobby inside it are the parts\n * that follow the visitor's language.\n *\n * Nothing here is a statistic we don't have. The score bands describe the\n * scale the prompt is told to use (subject-prompts.ts), not measured results.\n *\n * `[words](/path)` in a paragraph or an answer is a link.\n */\nimport { RATE_SUBJECT_PATH, type PageRateSubject } from '$lib/rate-subjects';\n\nexport type SubjectPage = {\n\tsubject: PageRateSubject;\n\tpath: string;\n\t/** WebApplication schema name, and the breadcrumb's last step */\n\tappName: string;\n\talternateNames: string[];\n\t/** the page's main search, as typed: it heads the FAQ */\n\tkeyword: string;\n\tbreadcrumb: string;\n\t/** \"what your boob rating means.\" */\n\tnoun: string;\n\t/** \"the score the same boobs would get from a better photo\" */\n\tthing: string;\n\t/** the album hub of the same pictures, for looking rather than rating */\n\talbums: { text: string; href: string };\n\t/** the H1's searchable eyebrow, then the H1 in two parts (the second in coral) */\n\teyebrow: string;\n\th1: [string, string];\n\tintro: string;\n\t/** \"how it works\": what it scores / how long / is it free. `{price}` is Pro's. */\n\thowItWorks: { term: string; text: string }[];\n\tdimensions: { name: string; text: string }[];\n\tbands: { range: string; text: string }[];\n\t/** heading + list of the page's own topic (shapes, guys and girls, poses…) */\n\tguide: {\n\t\tid: string;\n\t\th2: string;\n\t\tlead: string;\n\t\titems: { name: string; text: string }[];\n\t\tafter?: string;\n\t};\n\ttips: { h2: string; items: string[] };\n\tsections: { id: string; h2: string; paragraphs: string[] }[];\n\tfaq: { q: string; a: string }[];\n\t/** the beat lobby's lead-in, on the pages that have one */\n\tbeatLead?: { h2: string; text: string };\n};\n\nconst HOW_LONG = {\n\tterm: 'how long',\n\ttext: 'about 10 seconds. after you upload, pick roast mode for brutal honesty or hype mode for the kind version.'\n};\n\nconst IS_IT_FREE = {\n\tterm: 'is it free',\n\ttext: 'your first AI rating is free, no card. after that a rating is 10 tokens, or unlimited with Pro for {price}/mo. unless you choose to keep it, the photo is deleted the second the score is done.'\n};\n\nconst PHOTO_QUALITY = {\n\tname: 'photo quality',\n\ttext: 'sharpness and framing. most phone pics land at 6–7; blurry and grainy ones at 4–5.'\n};\n\nconst BANDS = [\n\t{\n\t\trange: 'under 5',\n\t\ttext: 'usually the photo, not you: too dark, too blurry or cropped too tight to judge. a better photo moves it fastest.'\n\t},\n\t{\n\t\trange: '5 to 7',\n\t\ttext: 'a decent pic held back by the light or the angle. the tips on your result say which fix is worth the most.'\n\t},\n\t{\n\t\trange: '7 to 8',\n\t\ttext: 'the scale’s middle: a 7 is a typical result, and an 8 is genuinely good.'\n\t},\n\t{\n\t\trange: '8 and up',\n\t\ttext: 'strong on all six, the photo included. a 9 is rare in roast mode, and a 10 is legendary.'\n\t}\n];\n\nconst PHOTO_SECTION = (what: string) => ({\n\tid: 'photo',\n\th2: 'what happens to your photo.',\n\tparagraphs: [\n\t\t`it goes over an encrypted connection, has its location and camera data stripped, and gets scored by the AI. then it’s deleted from our servers, whether the rating worked or not. the AI provider doesn’t keep it or train on it. no person sees your ${what} at any point, and nothing stays unless you tick save photo, which keeps it on your account to reuse.`\n\t]\n});\n\nconst RULES_SECTION = {\n\tid: 'rules',\n\th2: 'your own photos. 18+.',\n\tparagraphs: [\n\t\t'upload photos of yourself, and only if you’re 18 or older. rating someone else’s photo without them knowing isn’t allowed, and it doesn’t work: a photo that looks taken in secret, or of anyone who could be under 18, is refused before anything is scored. every photo is screened before the AI sees it. if a beat shows a photo of you that you didn’t post, report it and a moderator reviews it.'\n\t]\n};\n\nconst ROAST_OR_HYPE = {\n\tq: 'roast or hype: which should I pick?',\n\ta: 'the same six things get scored either way. roast mode is brutally honest about the photo; hype mode is the kind version and a little more generous. you pick after you upload.'\n};\n\nexport const SUBJECT_PAGES: Record<PageRateSubject, SubjectPage> = {\n\tboobs: {\n\t\tsubject: 'boobs',\n\t\tpath: RATE_SUBJECT_PATH.boobs,\n\t\tappName: 'AI Boob Rater',\n\t\talternateNames: ['rate my boobs', 'rate my tits', 'boob rater', 'tits rating', 'boob rating'],\n\t\tkeyword: 'rate my boobs',\n\t\tbreadcrumb: 'Rate my boobs',\n\t\tnoun: 'boob',\n\t\tthing: 'boobs',\n\t\talbums: { text: 'tits pics albums from real creators', href: '/albums/tits-pics' },\n\t\teyebrow: 'AI boob rater · rate my tits',\n\t\th1: ['rate my', 'boobs.'],\n\t\tintro:\n\t\t\t'one pic, an honest AI score out of 10 for shape, proportions, nipples and the photo itself. bra or no bra, any size. deleted from our servers the second we’re done.',\n\t\thowItWorks: [\n\t\t\t{\n\t\t\t\tterm: 'what it scores',\n\t\t\t\ttext: 'six things, each from 0 to 10: shape, proportions, nipples, photo quality, lighting and overall vibe, weighted into one honest score. rate my boobs, rate my tits or rate my rack: same AI, same scale.'\n\t\t\t},\n\t\t\tHOW_LONG,\n\t\t\tIS_IT_FREE\n\t\t],\n\t\tdimensions: [\n\t\t\t{\n\t\t\t\tname: 'shape',\n\t\t\t\ttext: 'form, fullness and how they sit. a little difference between left and right is normal and costs nothing.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'proportions',\n\t\t\t\ttext: 'how they fit the body they’re on: shoulders, ribcage, waist. bigger isn’t better here: small, medium and large all score 9+ when they’re in proportion.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'nipples',\n\t\t\t\ttext: 'nipples and areolae, as the photo shows them. covered by a bra, a bikini or a hand? you get a neutral 7 instead of a guess.'\n\t\t\t},\n\t\t\tPHOTO_QUALITY,\n\t\t\t{\n\t\t\t\tname: 'lighting',\n\t\t\t\ttext: 'harsh overhead light flattens shape and scores 4–5, a lamp 6–7, soft daylight from the side 8–9.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'overall vibe',\n\t\t\t\ttext: 'confidence and intent: a rushed, awkward shot scores lower than one taken on purpose.'\n\t\t\t}\n\t\t],\n\t\tbands: BANDS,\n\t\tguide: {\n\t\t\tid: 'shapes',\n\t\t\th2: 'boob shapes: what the AI sees.',\n\t\t\tlead: 'there’s no one right shape, and the AI doesn’t score one. it reads the shape you have and how the photo shows it. these are the types of boobs people usually name:',\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tname: 'round',\n\t\t\t\t\ttext: 'full above and below the nipple, with an even curve all the way round.'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'teardrop',\n\t\t\t\t\ttext: 'fuller at the bottom than the top: the shape most people picture.'\n\t\t\t\t},\n\t\t\t\t{ name: 'bell', text: 'slimmer at the top and heavier at the bottom, like a bell.' },\n\t\t\t\t{ name: 'east-west', text: 'nipples pointing outward, away from the middle of the chest.' },\n\t\t\t\t{ name: 'side-set', text: 'set wider apart, with more space between them.' },\n\t\t\t\t{ name: 'athletic', text: 'wider and more muscular around them, with less breast tissue.' },\n\t\t\t\t{ name: 'slender', text: 'narrow and long, with the nipples pointing down.' },\n\t\t\t\t{\n\t\t\t\t\tname: 'relaxed',\n\t\t\t\t\ttext: 'softer, with nipples that point down: common after weight changes or breastfeeding.'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'asymmetric',\n\t\t\t\t\ttext: 'one a little bigger than the other, which is true for most people.'\n\t\t\t\t}\n\t\t\t],\n\t\t\tafter:\n\t\t\t\t'every one of these can score 9+. what moves the number is the light, the angle and the frame, which is why the tips below are about the photo, not the body.'\n\t\t},\n\t\ttips: {\n\t\t\th2: 'how to take boob pics that score higher.',\n\t\t\titems: [\n\t\t\t\t'use soft light from a window or a lamp to the side. overhead light flattens shape and scores 4–5 on lighting; light from the side gives curve and depth.',\n\t\t\t\t'shoot at chest height or a little above, not from under the chin or straight down. the angle changes how proportions read.',\n\t\t\t\t'sit or stand up straight with your shoulders back. in a photo, posture is part of shape.',\n\t\t\t\t'keep the background plain and frame the shot on purpose. clutter costs points on photo quality and vibe.',\n\t\t\t\t'tap to focus and hold the phone steady. sharp beats close.',\n\t\t\t\t'leave your face out if you like. the AI rates the boobs, not you, and a crop below the chin is the safest pic to take.'\n\t\t\t]\n\t\t},\n\t\tsections: [\n\t\t\t{\n\t\t\t\tid: 'reddit',\n\t\t\t\th2: 'rate my boobs on reddit, or here?',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'r/ratemyboobs and the subs like it are where most people go to get their boobs rated: a public post, comments from strangers, and a post that stays up until you delete it. people come here instead when they want an answer that isn’t public.',\n\t\t\t\t\t'rate my boobs here and the AI answers in about 10 seconds, scoring the same six things for everyone. no person sees the photo, and it’s deleted once it’s scored. if you do want strangers to vote, a [boob beat](#beat) puts your pic against a challenger’s for 24 hours, anonymously, and only if you post it.'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'tits',\n\t\t\t\th2: 'rate my tits, rack or titties: same rater.',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'boobs, tits, breasts, a rack or titties: whatever you call them, it’s the same AI boob rater and the same six scores. a boob rating and a tits rating are one thing here, and a pic in a bra, a bikini or nothing gets scored on the same scale. type rate my tits, rate my titties or rate my boobs and you land on this same tool.'\n\t\t\t\t]\n\t\t\t},\n\t\t\tPHOTO_SECTION('boobs'),\n\t\t\tRULES_SECTION\n\t\t],\n\t\tfaq: [\n\t\t\t{\n\t\t\t\tq: 'is rate my boobs free?',\n\t\t\t\ta: 'yes, your first rating is free, no card. after that a rating is 10 tokens, or unlimited with Pro.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'is it an AI boob rater or a tits rating?',\n\t\t\t\ta: 'both. boobs, tits or rack, it’s the same AI and the same six scores. whether you searched for a boob rater, a tits rating or rate my rack, this is that tool, and your first rating is free.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'who sees my boobs?',\n\t\t\t\ta: 'no person. the AI scores the photo, and it’s deleted the second the score is done, unless you choose to save it for next time.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'do I have to show my face?',\n\t\t\t\ta: 'no. the AI rates the boobs, not your face, so crop below the chin. it’s the safest way to take any pic you might share, too.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'can I rate my boobs in a bra or a bikini?',\n\t\t\t\ta: 'yes. shape, proportions and the photo scores all read through fabric. nipples gets a neutral 7 when they’re covered, instead of a guess.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'how do I rate my tits?',\n\t\t\t\ta: 'upload one photo at the top of this page and pick roast or hype. the AI scores them in about 10 seconds, and the photo is deleted once it’s done.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'do bigger boobs get a higher score?',\n\t\t\t\ta: 'no. proportions scores how they fit your body, not their size, so small, medium and large boobs can all score 9+.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'can I rate my girlfriend’s boobs?',\n\t\t\t\ta: 'only if she uploads them herself. this is for rating your own photos: a photo that looks taken without someone knowing is refused, and so is anyone who could be under 18.'\n\t\t\t},\n\t\t\tROAST_OR_HYPE,\n\t\t\t{\n\t\t\t\tq: 'what’s a good boob rating?',\n\t\t\t\ta: 'a 7 is a typical result, and an 8 is genuinely good. 9 and up is rare, and it takes a good photo as well as good boobs.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'is this like r/ratemyboobs?',\n\t\t\t\ta: 'it answers the same question without the public post: an AI score in 10 seconds, no comments, and the photo deleted afterwards. if you want people to vote, start a [boob beat](/b/start?kind=boobs).'\n\t\t\t}\n\t\t],\n\t\tbeatLead: {\n\t\t\th2: 'boob beat: let the crowd vote.',\n\t\t\ttext: 'an AI score is one opinion. in a boob beat your pic goes up against a challenger’s, anyone can vote for 24 hours, one vote per device, and the most votes wins. it’s anonymous, and nothing goes up unless you post it.'\n\t\t}\n\t},\n\tass: {\n\t\tsubject: 'ass',\n\t\tpath: RATE_SUBJECT_PATH.ass,\n\t\tappName: 'AI Ass Rater',\n\t\talternateNames: ['rate my ass', 'rate my butt', 'ass rater', 'butt rater', 'booty rating'],\n\t\tkeyword: 'rate my ass',\n\t\tbreadcrumb: 'Rate my ass',\n\t\tnoun: 'ass',\n\t\tthing: 'ass',\n\t\talbums: { text: 'ass pics albums from real creators', href: '/albums/ass-pics' },\n\t\teyebrow: 'AI ass rater · rate my butt',\n\t\th1: ['rate my', 'ass.'],\n\t\tintro:\n\t\t\t'one pic, an honest AI score out of 10 for shape, proportions, tone and pose. guys and girls, thong, jeans or nothing. deleted from our servers the second we’re done.',\n\t\thowItWorks: [\n\t\t\t{\n\t\t\t\tterm: 'what it scores',\n\t\t\t\ttext: 'six things, each from 0 to 10: shape, proportions, tone, pose, photo quality and lighting, weighted into one honest score. ass, butt or booty: same AI, same scale.'\n\t\t\t},\n\t\t\tHOW_LONG,\n\t\t\tIS_IT_FREE\n\t\t],\n\t\tdimensions: [\n\t\t\t{\n\t\t\t\tname: 'shape',\n\t\t\t\ttext: 'roundness, the curve, and the line from your lower back into your thighs.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'proportions',\n\t\t\t\ttext: 'balance with your hips, waist and thighs. small and big both score 9+ when they fit the body.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'tone',\n\t\t\t\ttext: 'firmness and definition as the photo shows them. light and pose change this a lot, so it’s judged on what’s visible, never guessed.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'pose',\n\t\t\t\ttext: 'the arch, the angle, the framing. a flat straight-on snapshot scores 5–6; a deliberate arch or angle 7–9.'\n\t\t\t},\n\t\t\tPHOTO_QUALITY,\n\t\t\t{\n\t\t\t\tname: 'lighting',\n\t\t\t\ttext: 'harsh overhead light flattens everything and scores 4–5, a lamp 6–7, soft daylight from the side 8–9.'\n\t\t\t}\n\t\t],\n\t\tbands: BANDS,\n\t\tguide: {\n\t\t\tid: 'guys-and-girls',\n\t\t\th2: 'rate my ass, for guys and girls.',\n\t\t\tlead: 'the AI rates any butt, whoever it belongs to, on the same six scores. what you’re wearing changes what it can see, not the scale:',\n\t\t\titems: [\n\t\t\t\t{ name: 'nothing on', text: 'every score reads cleanly, tone included.' },\n\t\t\t\t{\n\t\t\t\t\tname: 'thong or underwear',\n\t\t\t\t\ttext: 'shape, proportions and pose read almost as well as bare.'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'leggings or gym shorts',\n\t\t\t\t\ttext: 'shape and pose come through; tone is judged on what the fabric shows.'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'jeans',\n\t\t\t\t\ttext: 'a fair read of shape and proportions, as long as the fit is close.'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'close-ups',\n\t\t\t\t\ttext: 'scored on the same six, though shape and pose read best from a step back.'\n\t\t\t\t}\n\t\t\t],\n\t\t\tafter:\n\t\t\t\t'the ass beat further down is open to everyone, and the crowd votes on the pics, not on who’s in them.'\n\t\t},\n\t\ttips: {\n\t\t\th2: 'how to take an ass pic that scores higher.',\n\t\t\titems: [\n\t\t\t\t'light from the side, not from above. overhead light flattens shape and tone; a window or a lamp to one side shows the curve.',\n\t\t\t\t'shoot from hip height. a phone held high shortens everything; at hip height the proportions read true.',\n\t\t\t\t'turn a little to the side and arch your lower back slightly. an angle shows shape a straight-on shot hides.',\n\t\t\t\t'use a mirror or the timer, and frame it on purpose: the whole butt, a little of the back and thighs, a plain background.',\n\t\t\t\t'hold it steady and tap to focus. sharp beats close.'\n\t\t\t]\n\t\t},\n\t\tsections: [\n\t\t\t{\n\t\t\t\tid: 'butt',\n\t\t\t\th2: 'butt, booty or bum: same rater.',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'ass, butt, booty, bum or cheeks: it’s the same AI ass rater and the same six scores. a butt rating, a booty rating and an ass rating are one thing here, and so is a rate my ass pic in jeans or a thong. ratemyass, rate my butt or rate my booty: however you type it, this is the tool.'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'reddit',\n\t\t\t\th2: 'rate my ass on reddit, or here?',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'reddit’s rate my ass subs give you a public post, comments from strangers and a post that stays up. here the AI answers in about 10 seconds with the same six scores for everyone, no person sees the photo, and it’s deleted once it’s scored.',\n\t\t\t\t\t'want votes from people as well? an [ass beat](#beat) puts your pic against a challenger’s for 24 hours, anonymously, and only if you post it.'\n\t\t\t\t]\n\t\t\t},\n\t\t\tPHOTO_SECTION('ass'),\n\t\t\tRULES_SECTION\n\t\t],\n\t\tfaq: [\n\t\t\t{\n\t\t\t\tq: 'is rate my ass free?',\n\t\t\t\ta: 'yes, your first rating is free, no card. after that a rating is 10 tokens, or unlimited with Pro.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'is it an ass rater or a butt rater?',\n\t\t\t\ta: 'both. ass, butt or booty, it’s the same AI and the same six scores, and your first rating is free.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'who sees my ass pic?',\n\t\t\t\ta: 'no person. the AI scores the photo, and it’s deleted the second the score is done, unless you choose to save it for next time.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'does it work for guys?',\n\t\t\t\ta: 'yes. the six scores are the same for any butt, and the ass beat is open to everyone.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'can I rate my ass in leggings or jeans?',\n\t\t\t\ta: 'yes. shape, proportions, pose and the photo scores all read through fabric. tone reads best with less in the way.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'does a bigger ass get a higher score?',\n\t\t\t\ta: 'no. proportions scores how it fits your body, so small and big can both score 9+.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'can I rate someone else’s ass?',\n\t\t\t\ta: 'no. rate your own photos only: a photo that looks taken without the person knowing is refused, and so is anyone who could be under 18.'\n\t\t\t},\n\t\t\tROAST_OR_HYPE,\n\t\t\t{\n\t\t\t\tq: 'what’s a good ass rating?',\n\t\t\t\ta: 'a 7 is a typical result, and an 8 is genuinely good. 9 and up is rare, and it takes a good photo as well as a good ass.'\n\t\t\t}\n\t\t],\n\t\tbeatLead: {\n\t\t\th2: 'ass beat: let the crowd vote.',\n\t\t\ttext: 'an AI score is one opinion. in an ass beat your pic goes up against a challenger’s, anyone can vote for 24 hours, one vote per device, and the most votes wins. it’s anonymous, and nothing goes up unless you post it.'\n\t\t}\n\t},\n\tnudes: {\n\t\tsubject: 'nudes',\n\t\tpath: RATE_SUBJECT_PATH.nudes,\n\t\tappName: 'AI Nude Rater',\n\t\talternateNames: ['rate my nudes', 'rate my body', 'nude rater', 'rate my nude', 'body rating'],\n\t\tkeyword: 'rate my nudes',\n\t\tbreadcrumb: 'Rate my nudes',\n\t\tnoun: 'nude',\n\t\tthing: 'body',\n\t\talbums: { text: 'amateur nudes albums from real creators', href: '/albums/amateur-nudes' },\n\t\teyebrow: 'AI nude rater · rate my body',\n\t\th1: ['rate my', 'nudes.'],\n\t\tintro:\n\t\t\t'one pic, an honest AI score out of 10 for body, pose, composition and lighting. any body, any gender, face in or cropped out. deleted from our servers the second we’re done.',\n\t\thowItWorks: [\n\t\t\t{\n\t\t\t\tterm: 'what it scores',\n\t\t\t\ttext: 'six things, each from 0 to 10: body, proportions, pose, composition, lighting and overall vibe, weighted into one honest score. a nude, a body pic or a fit check in underwear: same AI, same scale, whether you searched rate my nudes or rate my body.'\n\t\t\t},\n\t\t\tHOW_LONG,\n\t\t\tIS_IT_FREE\n\t\t],\n\t\tdimensions: [\n\t\t\t{\n\t\t\t\tname: 'body',\n\t\t\t\ttext: 'the physique as the photo shows it: shape, curves, definition. every body type can score 9+.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'proportions',\n\t\t\t\ttext: 'balance between shoulders, waist, hips and legs, and how the crop treats them.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'pose',\n\t\t\t\ttext: 'posture, angle, hands and the line of the body. stiff and straight-on scores 5–6; deliberate 7–9.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'composition',\n\t\t\t\ttext: 'framing, crop and background. a messy room behind you scores 4–5; a clean, intentional frame 8–9.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'lighting',\n\t\t\t\ttext: 'harsh overhead light flattens the body and scores 4–5, a lamp 6–7, soft daylight from the side 8–9.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tname: 'overall vibe',\n\t\t\t\ttext: 'confidence and heat: a nude taken on purpose scores higher than a rushed one.'\n\t\t\t}\n\t\t],\n\t\tbands: BANDS,\n\t\tguide: {\n\t\t\tid: 'poses',\n\t\t\th2: 'nude poses that score.',\n\t\t\tlead: 'pose is the score most people can raise in one try. these are the ones that read well to the AI and to people:',\n\t\t\titems: [\n\t\t\t\t{\n\t\t\t\t\tname: 'the three-quarter turn',\n\t\t\t\t\ttext: 'angle your body about 45° from the camera. it shows shape a straight-on shot flattens.'\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tname: 'the weight shift',\n\t\t\t\t\ttext: 'stand on one leg and let the other knee bend. the hips curve and the whole line relaxes.'\n\t\t\t\t},\n\t\t\t\t{ name: 'the arch', text: 'from the side or behind, arch your lower back a little.' },\n\t\t\t\t{\n\t\t\t\t\tname: 'over the shoulder',\n\t\t\t\t\ttext: 'from behind, turn your head and shoulders back toward the camera.'\n\t\t\t\t},\n\t\t\t\t{ name: 'lying down', text: 'shoot from the side at the body’s level, not from above.' },\n\t\t\t\t{\n\t\t\t\t\tname: 'hands with a job',\n\t\t\t\t\ttext: 'on a hip, in your hair, on the door frame. hands hanging at your sides read stiff.'\n\t\t\t\t}\n\t\t\t],\n\t\t\tafter: 'none of these needs your face in the frame.'\n\t\t},\n\t\ttips: {\n\t\t\th2: 'how to take good nudes.',\n\t\t\titems: [\n\t\t\t\t'find soft light: a window in the daytime, or a lamp to one side. overhead light flattens the body and scores 4–5 on lighting.',\n\t\t\t\t'clear the background. an unmade bed, laundry or a mirror full of toothpaste spots costs points on composition.',\n\t\t\t\t'prop the phone up and use the timer, so you can pose instead of holding the phone at arm’s length.',\n\t\t\t\t'shoot from chest or hip height. a phone held high shortens the body; one held low stretches it.',\n\t\t\t\t'keep it sharp: wipe the lens, tap to focus and hold still.',\n\t\t\t\t'crop out your face, tattoos and anything else that identifies you if the pic might ever leave your phone.'\n\t\t\t]\n\t\t},\n\t\tsections: [\n\t\t\t{\n\t\t\t\tid: 'before-you-send',\n\t\t\t\th2: 'rate your nudes before you send them.',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'that’s what rate my nudes is for: a second opinion before you hit send. the AI says what’s working, what drags the score down and what a better shot would get, in about 10 seconds, and no person ever sees it.',\n\t\t\t\t\t'check the frame for anything that identifies you while you’re at it: a face, a tattoo, mail on the table, a reflection in the mirror. the copy we score has its location and camera data stripped; the one you send from your phone may still carry them.'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'beats',\n\t\t\t\th2: 'want votes, not a score?',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'beat me puts your pic against a challenger’s and lets anyone vote for 24 hours, one vote per device. there’s a [boob beat](/rate-my-boobs#beat) and an [ass beat](/rate-my-ass#beat): anonymous, and nothing goes up unless you post it.'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'sell',\n\t\t\t\th2: 'sell the nudes that score.',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'a high score is a good sign people would pay to see the rest. [sell your nudes](/sell-nudes) as a photo or video album: you set the price, pick the free previews, and get paid on every unlock.'\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: 'body',\n\t\t\t\th2: 'rate my body, nude or not.',\n\t\t\t\tparagraphs: [\n\t\t\t\t\t'not every body pic is a nude. underwear, swimwear and shirtless shots count too: the AI rates the body and the photo, so a fit check in boxers gets the same six scores as a full nude. rate my body, rate my naked body, rate my nude: one request here, one set of scores. guys and girls, any body type.'\n\t\t\t\t]\n\t\t\t},\n\t\t\tPHOTO_SECTION('nudes'),\n\t\t\tRULES_SECTION\n\t\t],\n\t\tfaq: [\n\t\t\t{\n\t\t\t\tq: 'is rate my nudes free?',\n\t\t\t\ta: 'yes, your first rating is free, no card. after that a rating is 10 tokens, or unlimited with Pro.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'is it a nude rater or a body rater?',\n\t\t\t\ta: 'both. a nude, a body pic or an underwear shot, it’s the same AI and the same six scores, and your first rating is free.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'who sees my nudes?',\n\t\t\t\ta: 'no person. the AI scores the photo, and it’s deleted the second the score is done, unless you choose to save it for next time.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'do I have to show my face?',\n\t\t\t\ta: 'no. the AI rates the body and the photo, so crop your face out. it’s the safest way to take any nude.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'can I rate my nude anonymously?',\n\t\t\t\ta: 'yes. no person sees the photo, it’s deleted once it’s scored, and with your face cropped out nothing in it says who you are.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'does it work for guys?',\n\t\t\t\ta: 'yes. any gender and any body type, on the same six scores.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'can I rate a nude someone sent me?',\n\t\t\t\ta: 'no. rate your own photos only. a nude someone sent you is theirs: a photo that looks taken or shared without the person knowing is refused, and so is anyone who could be under 18.'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'does it rate underwear and swimwear pics?',\n\t\t\t\ta: 'yes. the AI rates the body and the photo, nude or not.'\n\t\t\t},\n\t\t\tROAST_OR_HYPE,\n\t\t\t{\n\t\t\t\tq: 'can I sell my nudes here?',\n\t\t\t\ta: 'yes: as a photo or video album, at your own price, with free previews. here’s [how selling nudes works](/sell-nudes).'\n\t\t\t},\n\t\t\t{\n\t\t\t\tq: 'what’s a good nude rating?',\n\t\t\t\ta: 'a 7 is a typical result, and an 8 is genuinely good. 9 and up is rare, and it takes a good photo as well as a good body.'\n\t\t\t}\n\t\t]\n\t}\n};\n\n/** A paragraph's text with its `[words](/path)` links reduced to the words,\n *  for structured data. */\nexport function plainText(s: string): string {\n\treturn s.replace(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g, '$1');\n}\n\n/** A paragraph split into text and links, for rendering. */\nexport function textParts(s: string): ({ text: string } | { text: string; href: string })[] {\n\tconst out: ({ text: string } | { text: string; href: string })[] = [];\n\tlet last = 0;\n\tfor (const m of s.matchAll(/\\[([^\\]]+)\\]\\(([^)]+)\\)/g)) {\n\t\tif (m.index! > last) out.push({ text: s.slice(last, m.index) });\n\t\tout.push({ text: m[1], href: m[2] });\n\t\tlast = m.index! + m[0].length;\n\t}\n\tif (last < s.length) out.push({ text: s.slice(last) });\n\treturn out;\n}\n","<script lang=\"ts\">\n\t/**\n\t * Epic R: the page of an AI rater besides the dick's — /rate-my-boobs,\n\t * /rate-my-ass, /rate-my-nudes. The uploader opens the page exactly as on\n\t * /rate (same quota, same saved photo, same result page); below it the page\n\t * answers what its searches ask (rate-subject-pages.ts), and boobs and ass\n\t * carry their beat me lobby (#beat), which beat me's category switch links\n\t * to. The words below the uploader are English only, like the album hubs.\n\t */\n\timport type { ComponentProps } from 'svelte';\n\timport RateUploader from './RateUploader.svelte';\n\timport RateSubjectSwitch from './RateSubjectSwitch.svelte';\n\timport BeatLobby from '$lib/components/beat/BeatLobby.svelte';\n\timport { SUBJECT_PAGES, plainText, textParts } from '$lib/rate-subject-pages';\n\timport { PAGE_RATE_SUBJECTS, RATE_SUBJECT_PATH, type PageRateSubject } from '$lib/rate-subjects';\n\timport { SITE_URL, breadcrumbList, jsonLdScript, seoByPath } from '$lib/seo';\n\timport { PRO_MONTHLY_LABEL } from '$lib/pricing';\n\timport type { BeatLobbyData } from '$lib/server/beat-lobby';\n\n\tinterface Props {\n\t\tdata: ComponentProps<typeof RateUploader>['data'];\n\t\tsubject: PageRateSubject;\n\t\t/** The beat me lobby of the page's category (boobs, ass). */\n\t\tlobby?: BeatLobbyData | null;\n\t}\n\n\tlet { data, subject, lobby = null }: Props = $props();\n\n\tconst p = $derived(SUBJECT_PAGES[subject]);\n\t/** \"AI boob rater\", as the headings say it */\n\tconst raterName = $derived(`AI ${p.appName.slice(3).toLowerCase()}`);\n\tconst fill = (s: string) => s.replace('{price}', PRO_MONTHLY_LABEL);\n\n\t/** The other raters, the dick's included, named the way they're searched. */\n\tconst RATERS: Record<string, { title: string; text: string }> = {\n\t\tboobs: { title: 'rate my boobs', text: 'the AI boob rater: shape, proportions, nipples.' },\n\t\tass: { title: 'rate my ass', text: 'the AI ass rater: shape, tone, pose.' },\n\t\tnudes: { title: 'rate my nudes', text: 'the AI nude rater, for the whole body and the photo.' },\n\t\tdick: {\n\t\t\ttitle: 'AI dick rater',\n\t\t\ttext: 'six scores for a dick pic, from proportions to lighting.'\n\t\t}\n\t};\n\tconst others = $derived([\n\t\t...PAGE_RATE_SUBJECTS.filter((s) => s !== subject).map((s) => ({\n\t\t\thref: RATE_SUBJECT_PATH[s],\n\t\t\t...RATERS[s]\n\t\t})),\n\t\t{ href: RATE_SUBJECT_PATH.dick, ...RATERS.dick }\n\t]);\n\n\tconst jsonLd = $derived(\n\t\tjsonLdScript({\n\t\t\t'@context': 'https://schema.org',\n\t\t\t'@type': 'WebApplication',\n\t\t\tname: p.appName,\n\t\t\talternateName: p.alternateNames,\n\t\t\turl: `${SITE_URL}${p.path}`,\n\t\t\tdescription: seoByPath[p.path]?.description,\n\t\t\tapplicationCategory: 'EntertainmentApplication',\n\t\t\toperatingSystem: 'Any',\n\t\t\toffers: {\n\t\t\t\t'@type': 'Offer',\n\t\t\t\tprice: '0',\n\t\t\t\tpriceCurrency: 'USD',\n\t\t\t\tdescription: 'The first rating is free.'\n\t\t\t}\n\t\t}) +\n\t\t\tjsonLdScript({\n\t\t\t\t'@context': 'https://schema.org',\n\t\t\t\t'@type': 'FAQPage',\n\t\t\t\tmainEntity: p.faq.map((f) => ({\n\t\t\t\t\t'@type': 'Question',\n\t\t\t\t\tname: f.q,\n\t\t\t\t\tacceptedAnswer: { '@type': 'Answer', text: plainText(f.a) }\n\t\t\t\t}))\n\t\t\t}) +\n\t\t\tjsonLdScript(\n\t\t\t\tbreadcrumbList([\n\t\t\t\t\t{ name: 'RateMyD', url: SITE_URL },\n\t\t\t\t\t{ name: p.breadcrumb, url: `${SITE_URL}${p.path}` }\n\t\t\t\t])\n\t\t\t)\n\t);\n\n\tconst h2 = 'font-display text-2xl font-bold tracking-tighter md:text-4xl';\n\tconst prose = 'max-w-3xl text-sm leading-relaxed text-text/85 md:text-base';\n\tconst link =\n\t\t'font-semibold text-text underline decoration-border underline-offset-4 hover:decoration-text';\n</script>\n\n<svelte:head>\n\t{@html jsonLd}\n</svelte:head>\n\n{#snippet rich(s: string)}\n\t{#each textParts(s) as part, i (i)}{#if 'href' in part}<a href={part.href} class={link}\n\t\t\t\t>{part.text}</a\n\t\t\t>{:else}{part.text}{/if}{/each}\n{/snippet}\n\n<RateUploader {data} {subject}>\n\t{#snippet top()}\n\t\t<RateSubjectSwitch active={subject} />\n\t{/snippet}\n\t{#snippet heading()}\n\t\t<span\n\t\t\tclass=\"mb-4 block font-display text-[11px] leading-normal font-bold tracking-[0.28em] text-muted uppercase\"\n\t\t\t>{p.eyebrow}</span\n\t\t>\n\t\t{p.h1[0]}<br />\n\t\t<span class=\"text-coral\">{p.h1[1]}</span>\n\t{/snippet}\n\t{#snippet intro()}\n\t\t{p.intro}\n\t{/snippet}\n\n\t<!-- What the rater is and what it scores, right under the dropzone: the\n\t\t questions people ask before they upload. -->\n\t<section\n\t\taria-labelledby=\"how-it-works\"\n\t\tclass=\"border-t border-border px-5 pt-14 pb-14 md:px-0 md:pt-20 md:pb-20\"\n\t>\n\t\t<div class=\"mx-auto max-w-5xl\">\n\t\t\t<h2 id=\"how-it-works\" class=\"font-display text-3xl font-bold tracking-tighter md:text-5xl\">\n\t\t\t\thow the {raterName} works.\n\t\t\t</h2>\n\t\t\t<dl class=\"mt-8 grid gap-8 md:mt-10 md:grid-cols-3 md:gap-10\">\n\t\t\t\t{#each p.howItWorks as h (h.term)}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<dt class=\"font-display text-xs font-bold tracking-[0.16em] text-muted uppercase\">\n\t\t\t\t\t\t\t{h.term}\n\t\t\t\t\t\t</dt>\n\t\t\t\t\t\t<dd class=\"mt-2 text-sm leading-relaxed text-text/85 md:text-base\">{fill(h.text)}</dd>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</dl>\n\n\t\t\t<h2 class=\"mt-16 md:mt-20 {h2}\">the six scores, explained.</h2>\n\t\t\t<dl class=\"mt-6 grid gap-x-10 gap-y-6 md:mt-8 md:grid-cols-2\">\n\t\t\t\t{#each p.dimensions as d (d.name)}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<dt class=\"font-display text-sm font-bold tracking-tight\">{d.name}</dt>\n\t\t\t\t\t\t<dd class=\"mt-1 text-sm leading-relaxed text-text/80\">{d.text}</dd>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</dl>\n\t\t\t<p class=\"mt-8 {prose}\">\n\t\t\t\ta rating also shows your potential, the score the same {p.thing} would get from a better photo,\n\t\t\t\tand three tips that say what each fix is worth, like +0.8 to lighting. the free rating shows your\n\t\t\t\tscore and the first two scores; premium unlocks the full breakdown and the tips.\n\t\t\t</p>\n\n\t\t\t{#if lobby && p.beatLead}\n\t\t\t\t<h2 class=\"mt-16 md:mt-20 {h2}\">{p.beatLead.h2}</h2>\n\t\t\t\t<p class=\"mt-6 md:mt-8 {prose}\">{p.beatLead.text}</p>\n\t\t\t{/if}\n\t\t</div>\n\t</section>\n\n\t{#if lobby}\n\t\t<BeatLobby data={lobby} embedded />\n\t{/if}\n\n\t<section\n\t\taria-labelledby=\"rating-means\"\n\t\tclass=\"border-t border-border px-5 pt-14 pb-[calc(100px+env(safe-area-inset-bottom))] md:px-0 md:pt-20 md:pb-24\"\n\t>\n\t\t<div class=\"mx-auto max-w-5xl\">\n\t\t\t<h2 id=\"rating-means\" class={h2}>what your {p.noun} rating means.</h2>\n\t\t\t<p class=\"mt-6 md:mt-8 {prose}\">\n\t\t\t\tthe overall score is the six scores weighted into one number, from 0 to 10. the scale is set\n\t\t\t\tso a typical photo lands around 7:\n\t\t\t</p>\n\t\t\t<dl class=\"mt-6 grid gap-x-10 gap-y-6 md:grid-cols-2\">\n\t\t\t\t{#each p.bands as b (b.range)}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<dt class=\"font-display text-sm font-bold tracking-tight\">{b.range}</dt>\n\t\t\t\t\t\t<dd class=\"mt-1 text-sm leading-relaxed text-text/80\">{b.text}</dd>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</dl>\n\n\t\t\t<h2 id={p.guide.id} class=\"mt-16 md:mt-20 {h2}\">{p.guide.h2}</h2>\n\t\t\t<p class=\"mt-6 md:mt-8 {prose}\">{p.guide.lead}</p>\n\t\t\t<dl class=\"mt-6 grid gap-x-10 gap-y-5 md:grid-cols-2\">\n\t\t\t\t{#each p.guide.items as g (g.name)}\n\t\t\t\t\t<div>\n\t\t\t\t\t\t<dt class=\"font-display text-sm font-bold tracking-tight\">{g.name}</dt>\n\t\t\t\t\t\t<dd class=\"mt-1 text-sm leading-relaxed text-text/80\">{g.text}</dd>\n\t\t\t\t\t</div>\n\t\t\t\t{/each}\n\t\t\t</dl>\n\t\t\t{#if p.guide.after}\n\t\t\t\t<p class=\"mt-6 {prose}\">{p.guide.after}</p>\n\t\t\t{/if}\n\n\t\t\t<h2 class=\"mt-16 md:mt-20 {h2}\">{p.tips.h2}</h2>\n\t\t\t<ol class=\"mt-6 space-y-3 md:mt-8 {prose}\">\n\t\t\t\t{#each p.tips.items as tip, i (tip)}\n\t\t\t\t\t<li class=\"flex gap-4\">\n\t\t\t\t\t\t<span class=\"font-display font-bold text-coral tabular-nums\"\n\t\t\t\t\t\t\t>{String(i + 1).padStart(2, '0')}</span\n\t\t\t\t\t\t>\n\t\t\t\t\t\t<span>{tip}</span>\n\t\t\t\t\t</li>\n\t\t\t\t{/each}\n\t\t\t</ol>\n\n\t\t\t{#each p.sections as s (s.id)}\n\t\t\t\t<h2 id={s.id} class=\"mt-16 md:mt-20 {h2}\">{s.h2}</h2>\n\t\t\t\t{#each s.paragraphs as para, i (i)}\n\t\t\t\t\t<p class=\"{i === 0 ? 'mt-6 md:mt-8' : 'mt-4'} {prose}\">{@render rich(para)}</p>\n\t\t\t\t{/each}\n\t\t\t{/each}\n\n\t\t\t<h2 class=\"mt-16 md:mt-20 {h2}\">{p.keyword}: questions.</h2>\n\t\t\t<div class=\"mt-6 divide-y divide-border border-y border-border md:mt-8\">\n\t\t\t\t{#each p.faq as f (f.q)}\n\t\t\t\t\t<details class=\"group py-4\">\n\t\t\t\t\t\t<summary\n\t\t\t\t\t\t\tclass=\"flex cursor-pointer list-none items-center justify-between gap-4 font-display text-base font-bold tracking-tight md:text-lg\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{f.q}\n\t\t\t\t\t\t\t<span\n\t\t\t\t\t\t\t\tclass=\"shrink-0 text-muted transition-transform group-open:rotate-45\"\n\t\t\t\t\t\t\t\taria-hidden=\"true\">+</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t</summary>\n\t\t\t\t\t\t<p class=\"mt-2 max-w-3xl text-sm leading-relaxed text-text/80 md:text-base\">\n\t\t\t\t\t\t\t{@render rich(f.a)}\n\t\t\t\t\t\t</p>\n\t\t\t\t\t</details>\n\t\t\t\t{/each}\n\t\t\t</div>\n\n\t\t\t<h2 class=\"mt-16 md:mt-20 {h2}\">more AI raters.</h2>\n\t\t\t<ul class=\"mt-6 grid gap-3 sm:grid-cols-3 md:mt-8\">\n\t\t\t\t{#each others as r (r.href)}\n\t\t\t\t\t<li>\n\t\t\t\t\t\t<a\n\t\t\t\t\t\t\thref={r.href}\n\t\t\t\t\t\t\tclass=\"flex h-full flex-col rounded-xl border border-border bg-surface/50 p-5 no-underline transition-colors hover:border-muted/40\"\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"font-display text-lg leading-tight font-bold tracking-tight text-text\"\n\t\t\t\t\t\t\t\t>{r.title}</span\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t<span class=\"mt-1.5 text-[13px] leading-relaxed text-muted\">{r.text}</span>\n\t\t\t\t\t\t</a>\n\t\t\t\t\t</li>\n\t\t\t\t{/each}\n\t\t\t</ul>\n\t\t\t<p class=\"mt-8 text-sm text-muted\">\n\t\t\t\tlooking, not rating? <a href={p.albums.href} class={link}>{p.albums.text} →</a>\n\t\t\t</p>\n\t\t</div>\n\t</section>\n</RateUploader>\n"],"version":3}