{"release_id":"01a1c502-4ad1-0000-ec62-adc54d3c69aa","chunk_id":"01a1c502-4cd5-7eb3-85cc-9c02351393fb","file":"186.BDjTVwar.mjs","mappings":"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","names":["TONE","INK","FONT","RULER","GAP","MIN_COL","TOP","LABELS","esc","s","r2","n","figure","cx","base","lengthCm","girthCm","fill","ghost","d","diameterCm","w","top","rTop","rBottom","body","ridgeY","ridge","object","key","o","OBJECT_BY_KEY","x","y","h","ruler","maxCm","unit","right","out","step","major","i","isMajor","stageSvg","items","opts","widthOf","it","heightOf","tallest","cols","width","a","b","height","parts","strong","PATH","start","untrack","readComparison","page","$$props","$.state","$.proxy","you","them","themName","flaccid","lang","$.derived","LOCALE_INFO","locale","fmt","cm","formatLength","$.get","pct","signed","themLabel","t","item","size","tone","label","soft","flaccidGirthCm","hard","stage","AVERAGE","lengthPct","percentile","BJU_2015","girthPct","grow","growth","growText","growLine","AVERAGE_GROWTH","OBJECT_LINES","msg","objectLine","diff","same","longer","shorter","duoLine","FIELDS","bounds","LIMITS","v","toUnit","shown","set","raw","next","clamp","fromUnit","addThem","$.set","removeThem","shareUrl","SITE_URL","lhref","writeComparison","png","touch","copied","onMount","isTouchDevice","$.user_effect","svg","frameSvg","live","timer","renderPng","sharePicture","how","sharePng","trackShare","copyLink","trackLinkCopy","appLd","jsonLdScript","crumbsLd","breadcrumbList","avgLen","avgGirth","main","root","$.head","$$anchor","header","p","h1","p_1","section","div","div_1","div_2","button","$.child","text_3","$.reset","button_1","$.sibling","text_4","div_3","button_2","button_3","div_4","OBJECTS","button_4","root_2","text_5","$.set_attribute","classes_4","$.set_class","$.delegated","$.append","p_2","root_3","$.template_effect","$0","$.set_text","text_6","$$render","consequent","section_1","div_5","$.each","node_3","f","lo","hi","div_6","root_4","label_1","span","b_1","small","span_1","input","$.remove_input_defaults","span_2","input_1","computed_const","$.set_value","$2","$3","$4","e","div_7","$.first_child","fragment_1","input_2","button_5","node_5","div_8","root_6","label_2","span_3","b_2","span_4","input_3","span_5","input_4","computed_const_1","$1","$$value","button_6","root_7","text_14","consequent_1","alternate","section_2","ul","li","b_3","small_1","text_16","li_1","span_6","li_2","span_7","li_3","root_8","span_8","consequent_2","li_4","node_6","span_9","div_9","button_7","button_8","nav","a_1","b_4","small_2","a_2","b_5","small_3","text_26","a_3","b_6","small_4","article","h2","p_3","h2_1","p_4","h2_2","p_5","h2_3","p_6","h2_4","p_7","h2_5","p_8","h2_6","p_9","p_10","classes","classes_1","$7","classes_2","classes_3","$8","$12","$13","$14","$18","$19","$22","nominalWidthMm"],"sources":["../../../../../../src/lib/tools/size-stage.ts","../../../../../../src/routes/tools/penis-size-visualizer/+page.svelte"],"sourcesContent":["import { OBJECT_BY_KEY, diameterCm, type ObjectKey, type Unit } from './size-scale';\n\n/**\n * The to-scale picture (RAT-575) as one SVG string: the page shows it, and the\n * share image is the same drawing on a canvas, so what people post is what\n * they saw. Every coordinate is in centimetres; the viewBox does the scaling.\n *\n * The figures are schematic on purpose — a rounded column with a line where\n * the head starts — so the page stays something you can open anywhere.\n */\n\nexport type Tone = 'you' | 'them' | 'avg';\n\nexport type StageItem =\n\t| {\n\t\t\tkind: 'figure';\n\t\t\ttone: Tone;\n\t\t\tlabel: string;\n\t\t\tvalue: string;\n\t\t\tlengthCm: number;\n\t\t\tgirthCm: number;\n\t\t\t/** the other state, drawn as a dashed outline behind */\n\t\t\tghost?: { lengthCm: number; girthCm: number };\n\t  }\n\t| { kind: 'object'; object: ObjectKey; label: string; value: string };\n\nconst TONE: Record<Tone, string> = { you: '#ff4d6d', them: '#8b93ff', avg: '#636366' };\nconst INK = { grid: '#262628', tick: '#3a3a3c', label: '#8e8e93', text: '#f5f5f7' };\nconst FONT =\n\t\"-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'Helvetica Neue', Arial, sans-serif\";\n\nconst RULER = 2.4; // left margin for the scale\nconst GAP = 2.2; // between columns\nconst MIN_COL = 6.2; // a column is at least this wide, for its two label lines\nconst TOP = 1.2;\nconst LABELS = 3.6; // below the baseline\n\nconst esc = (s: string) =>\n\ts.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\"/g, '&quot;');\nconst r2 = (n: number) => Math.round(n * 100) / 100;\n\nfunction figure(\n\tcx: number,\n\tbase: number,\n\tlengthCm: number,\n\tgirthCm: number,\n\tfill: string,\n\tghost = false\n) {\n\tconst d = diameterCm(girthCm);\n\tconst w = d / 2;\n\tconst top = base - lengthCm;\n\tconst rTop = Math.min(w, lengthCm / 2);\n\tconst rBottom = Math.min(d * 0.18, lengthCm / 4);\n\tconst body =\n\t\t`M${r2(cx - w)},${r2(top + rTop)}` +\n\t\t` A${r2(w)},${r2(rTop)} 0 0 1 ${r2(cx + w)},${r2(top + rTop)}` +\n\t\t` L${r2(cx + w)},${r2(base - rBottom)}` +\n\t\t` Q${r2(cx + w)},${r2(base)} ${r2(cx + w - rBottom)},${r2(base)}` +\n\t\t` L${r2(cx - w + rBottom)},${r2(base)}` +\n\t\t` Q${r2(cx - w)},${r2(base)} ${r2(cx - w)},${r2(base - rBottom)} Z`;\n\tif (ghost) {\n\t\treturn `<path d=\"${body}\" fill=\"none\" stroke=\"${fill}\" stroke-opacity=\"0.55\" stroke-width=\"0.12\" stroke-dasharray=\"0.35 0.3\"/>`;\n\t}\n\t// where the head starts: a shallow curve a little under one diameter down\n\tconst ridgeY = top + Math.min(d * 0.95, lengthCm * 0.4);\n\tconst ridge = `M${r2(cx - w)},${r2(ridgeY + d * 0.12)} Q${r2(cx)},${r2(ridgeY - d * 0.14)} ${r2(cx + w)},${r2(ridgeY + d * 0.12)}`;\n\treturn (\n\t\t`<path d=\"${body}\" fill=\"${fill}\"/>` +\n\t\t`<path d=\"${ridge}\" fill=\"none\" stroke=\"#000\" stroke-opacity=\"0.22\" stroke-width=\"0.14\" stroke-linecap=\"round\"/>`\n\t);\n}\n\nfunction object(key: ObjectKey, cx: number, base: number) {\n\tconst o = OBJECT_BY_KEY[key];\n\tconst x = cx - o.widthCm / 2;\n\tconst y = base - o.heightCm;\n\tconst w = o.widthCm;\n\tconst h = o.heightCm;\n\tif (key === 'phone') {\n\t\treturn (\n\t\t\t`<rect x=\"${r2(x)}\" y=\"${r2(y)}\" width=\"${w}\" height=\"${h}\" rx=\"1.05\" fill=\"#2c2c2e\"/>` +\n\t\t\t`<rect x=\"${r2(x + 0.28)}\" y=\"${r2(y + 0.28)}\" width=\"${r2(w - 0.56)}\" height=\"${r2(h - 0.56)}\" rx=\"0.82\" fill=\"#0f0f10\"/>` +\n\t\t\t`<rect x=\"${r2(cx - 1.05)}\" y=\"${r2(y + 0.62)}\" width=\"2.1\" height=\"0.62\" rx=\"0.31\" fill=\"#2c2c2e\"/>`\n\t\t);\n\t}\n\tif (key === 'can') {\n\t\treturn (\n\t\t\t`<rect x=\"${r2(x)}\" y=\"${r2(y)}\" width=\"${w}\" height=\"${h}\" rx=\"0.55\" fill=\"#3a3a3c\"/>` +\n\t\t\t`<rect x=\"${r2(x + 0.35)}\" y=\"${r2(y)}\" width=\"${r2(w - 0.7)}\" height=\"0.7\" rx=\"0.3\" fill=\"#636366\"/>` +\n\t\t\t`<rect x=\"${r2(x + 0.35)}\" y=\"${r2(base - 0.6)}\" width=\"${r2(w - 0.7)}\" height=\"0.6\" rx=\"0.3\" fill=\"#636366\"/>`\n\t\t);\n\t}\n\treturn (\n\t\t`<rect x=\"${r2(x)}\" y=\"${r2(y)}\" width=\"${w}\" height=\"${h}\" rx=\"0.32\" fill=\"#2c2c2e\"/>` +\n\t\t`<rect x=\"${r2(x + 0.75)}\" y=\"${r2(y + 1.1)}\" width=\"1.15\" height=\"0.9\" rx=\"0.16\" fill=\"#8e8e93\"/>` +\n\t\t`<rect x=\"${r2(x)}\" y=\"${r2(y + h - 2.2)}\" width=\"${w}\" height=\"0.32\" fill=\"#3a3a3c\"/>`\n\t);\n}\n\nfunction ruler(base: number, maxCm: number, unit: Unit, right: number) {\n\tconst out: string[] = [];\n\tconst step = unit === 'cm' ? 1 : 2.54 / 2;\n\tconst major = unit === 'cm' ? 5 : 2; // every 5 cm, every inch\n\tfor (let i = 0; i * step <= maxCm + 0.01; i++) {\n\t\tconst y = r2(base - i * step);\n\t\tconst isMajor = i % major === 0;\n\t\tif (isMajor && i > 0) {\n\t\t\tout.push(\n\t\t\t\t`<line x1=\"${RULER - 0.5}\" x2=\"${r2(right)}\" y1=\"${y}\" y2=\"${y}\" stroke=\"${INK.grid}\" stroke-width=\"0.06\"/>`\n\t\t\t);\n\t\t\tconst n = unit === 'cm' ? i * step : i / 2;\n\t\t\tout.push(\n\t\t\t\t`<text x=\"${RULER - 0.85}\" y=\"${r2(y + 0.32)}\" text-anchor=\"end\" font-size=\"0.85\" fill=\"${INK.label}\">${n}</text>`\n\t\t\t);\n\t\t}\n\t\tout.push(\n\t\t\t`<line x1=\"${r2(RULER - (isMajor ? 0.55 : 0.3))}\" x2=\"${RULER}\" y1=\"${y}\" y2=\"${y}\" stroke=\"${INK.tick}\" stroke-width=\"0.07\"/>`\n\t\t);\n\t}\n\tout.push(\n\t\t`<text x=\"${RULER - 0.85}\" y=\"${r2(base + 0.32)}\" text-anchor=\"end\" font-size=\"0.85\" fill=\"${INK.label}\">0</text>`,\n\t\t`<text x=\"${RULER - 0.85}\" y=\"${r2(base + 1.6)}\" text-anchor=\"end\" font-size=\"0.75\" fill=\"${INK.label}\">${unit}</text>`\n\t);\n\treturn out.join('');\n}\n\nexport interface StageOptions {\n\tunit: Unit;\n\t/** describes the picture for screen readers */\n\ttitle: string;\n\t/** the scale grows with the tallest item, never below this */\n\tminCm?: number;\n}\n\nexport function stageSvg(\n\titems: StageItem[],\n\topts: StageOptions\n): { svg: string; width: number; height: number } {\n\tconst widthOf = (it: StageItem) =>\n\t\tit.kind === 'object' ? OBJECT_BY_KEY[it.object].widthCm : diameterCm(it.girthCm);\n\tconst heightOf = (it: StageItem) =>\n\t\tit.kind === 'object'\n\t\t\t? OBJECT_BY_KEY[it.object].heightCm\n\t\t\t: Math.max(it.lengthCm, it.ghost?.lengthCm ?? 0);\n\tconst tallest = Math.max(opts.minCm ?? 16, ...items.map(heightOf));\n\tconst maxCm = Math.ceil((tallest + 1) / 5) * 5;\n\tconst cols = items.map((it) => Math.max(MIN_COL, widthOf(it) + GAP));\n\tconst width = r2(RULER + 0.6 + cols.reduce((a, b) => a + b, 0));\n\tconst height = r2(TOP + maxCm + LABELS);\n\tconst base = TOP + maxCm;\n\n\tconst parts: string[] = [ruler(base, maxCm, opts.unit, width)];\n\tlet x = RULER + 0.6;\n\titems.forEach((it, i) => {\n\t\tconst cx = x + cols[i] / 2;\n\t\tif (it.kind === 'figure') {\n\t\t\tconst fill = TONE[it.tone];\n\t\t\tif (it.ghost) parts.push(figure(cx, base, it.ghost.lengthCm, it.ghost.girthCm, fill, true));\n\t\t\tparts.push(figure(cx, base, it.lengthCm, it.girthCm, fill));\n\t\t} else {\n\t\t\tparts.push(object(it.object, cx, base));\n\t\t}\n\t\tconst strong = it.kind === 'figure' && it.tone !== 'avg';\n\t\tparts.push(\n\t\t\t`<text x=\"${r2(cx)}\" y=\"${r2(base + 1.35)}\" text-anchor=\"middle\" font-size=\"0.95\" font-weight=\"${strong ? 700 : 600}\" fill=\"${strong ? INK.text : INK.label}\">${esc(it.label)}</text>`,\n\t\t\t`<text x=\"${r2(cx)}\" y=\"${r2(base + 2.65)}\" text-anchor=\"middle\" font-size=\"0.9\" fill=\"${INK.label}\">${esc(it.value)}</text>`\n\t\t);\n\t\tx += cols[i];\n\t});\n\n\tconst svg =\n\t\t`<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 ${width} ${height}\" role=\"img\" font-family=\"${esc(FONT)}\">` +\n\t\t`<title>${esc(opts.title)}</title>${parts.join('')}</svg>`;\n\treturn { svg, width, height };\n}\n","<script lang=\"ts\">\n\timport { onMount, untrack } from 'svelte';\n\timport { page } from '$app/state';\n\timport { BJU_2015, percentile } from '$lib/data/size-stats';\n\timport { SITE_URL, jsonLdScript, breadcrumbList } from '$lib/seo';\n\timport { t, lhref, locale, LOCALE_INFO } from '$lib/i18n';\n\timport { msg } from '$lib/i18n/mark';\n\timport { trackShare, trackLinkCopy } from '$lib/analytics';\n\timport {\n\t\tAVERAGE,\n\t\tAVERAGE_GROWTH,\n\t\tLIMITS,\n\t\tOBJECTS,\n\t\tOBJECT_BY_KEY,\n\t\tclamp,\n\t\tflaccidGirthCm,\n\t\tformatLength,\n\t\tfromUnit,\n\t\tgrowth,\n\t\treadComparison,\n\t\ttoUnit,\n\t\twriteComparison,\n\t\ttype ObjectKey,\n\t\ttype Size,\n\t\ttype Unit\n\t} from '$lib/tools/size-scale';\n\timport { stageSvg, type StageItem } from '$lib/tools/size-stage';\n\timport { frameSvg, isTouchDevice, renderPng, sharePng } from '$lib/tools/share-image';\n\timport { nominalWidthMm } from '$lib/tools/condoms';\n\n\tlet { data } = $props();\n\n\tconst PATH = '/tools/penis-size-visualizer';\n\n\t// A shared link opens on the picture it was made from (RAT-575); otherwise\n\t// the average, in the reader's unit.\n\tconst start = untrack(() => readComparison(page.url.searchParams, data.defaultUnit));\n\tlet unit = $state<Unit>(start.unit);\n\tlet you = $state<Size>(start.you);\n\tlet them = $state<Size | null>(start.them);\n\tlet themName = $state(start.themName);\n\tlet flaccid = $state(start.flaccid);\n\tlet object = $state<ObjectKey>(start.object);\n\n\tconst lang = $derived(LOCALE_INFO[locale()].hreflang);\n\tconst fmt = (cm: number) => formatLength(cm, unit, lang);\n\tconst pct = (n: number) => n.toLocaleString(lang, { maximumFractionDigits: 0 });\n\tconst signed = (cm: number) => (cm >= 0 ? '+' : '−') + fmt(Math.abs(cm));\n\n\tconst themLabel = $derived(themName.trim() || t('Them'));\n\n\tfunction item(size: Size, tone: 'you' | 'them' | 'avg', label: string): StageItem {\n\t\tconst soft = { lengthCm: size.flaccidCm, girthCm: flaccidGirthCm(size.girthCm) };\n\t\tconst hard = { lengthCm: size.lengthCm, girthCm: size.girthCm };\n\t\treturn {\n\t\t\tkind: 'figure',\n\t\t\ttone,\n\t\t\tlabel,\n\t\t\tvalue: fmt(flaccid ? soft.lengthCm : hard.lengthCm),\n\t\t\t...(flaccid ? soft : hard),\n\t\t\tghost: flaccid ? hard : undefined\n\t\t};\n\t}\n\n\tconst stage = $derived(\n\t\tstageSvg(\n\t\t\t[\n\t\t\t\titem(you, 'you', t('You')),\n\t\t\t\t...(them ? [item(them, 'them', themLabel)] : []),\n\t\t\t\titem(AVERAGE, 'avg', t('Average')),\n\t\t\t\t{\n\t\t\t\t\tkind: 'object',\n\t\t\t\t\tobject,\n\t\t\t\t\tlabel: t(OBJECT_BY_KEY[object].label),\n\t\t\t\t\tvalue: fmt(OBJECT_BY_KEY[object].heightCm)\n\t\t\t\t}\n\t\t\t],\n\t\t\t{ unit, title: t('Your size to scale, next to the average') }\n\t\t)\n\t);\n\n\t// ── readouts ──\n\tconst lengthPct = $derived(percentile(you.lengthCm, BJU_2015.erectLength, 'cm'));\n\tconst girthPct = $derived(percentile(you.girthCm, BJU_2015.erectCircumference, 'cm'));\n\tconst grow = $derived(growth(you));\n\tconst growText = $derived(\n\t\tt('{cm} longer erect ({pct}%)', { cm: fmt(grow.cm), pct: `+${pct(grow.ratio * 100)}` })\n\t);\n\tconst growLine = $derived(\n\t\tgrow.kind === 'grower'\n\t\t\t? t('A grower: {growth}. The average grows {avg}%.', {\n\t\t\t\t\tgrowth: growText,\n\t\t\t\t\tavg: `+${pct(AVERAGE_GROWTH * 100)}`\n\t\t\t\t})\n\t\t\t: grow.kind === 'shower'\n\t\t\t\t? t('A shower: {growth}. The average grows {avg}%.', {\n\t\t\t\t\t\tgrowth: growText,\n\t\t\t\t\t\tavg: `+${pct(AVERAGE_GROWTH * 100)}`\n\t\t\t\t\t})\n\t\t\t\t: t('Typical growth: {growth}, close to the average {avg}%.', {\n\t\t\t\t\t\tgrowth: growText,\n\t\t\t\t\t\tavg: `+${pct(AVERAGE_GROWTH * 100)}`\n\t\t\t\t\t})\n\t);\n\tconst OBJECT_LINES: Record<ObjectKey, [string, string, string]> = {\n\t\tcard: [\n\t\t\tmsg('About as long as a bank card.'),\n\t\t\tmsg('{diff} longer than a bank card.'),\n\t\t\tmsg('{diff} shorter than a bank card.')\n\t\t],\n\t\tcan: [\n\t\t\tmsg('About as long as a soda can.'),\n\t\t\tmsg('{diff} longer than a soda can.'),\n\t\t\tmsg('{diff} shorter than a soda can.')\n\t\t],\n\t\tphone: [\n\t\t\tmsg('About as long as a phone.'),\n\t\t\tmsg('{diff} longer than a phone.'),\n\t\t\tmsg('{diff} shorter than a phone.')\n\t\t]\n\t};\n\tconst objectLine = $derived.by(() => {\n\t\tconst diff = you.lengthCm - OBJECT_BY_KEY[object].heightCm;\n\t\tconst [same, longer, shorter] = OBJECT_LINES[object];\n\t\tif (Math.abs(diff) < 0.5) return t(same);\n\t\treturn t(diff > 0 ? longer : shorter, { diff: fmt(Math.abs(diff)) });\n\t});\n\tconst duoLine = $derived(\n\t\tthem\n\t\t\t? t('You vs {name}: {length} in length, {girth} in girth.', {\n\t\t\t\t\tname: themLabel,\n\t\t\t\t\tlength: signed(you.lengthCm - them.lengthCm),\n\t\t\t\t\tgirth: signed(you.girthCm - them.girthCm)\n\t\t\t\t})\n\t\t\t: ''\n\t);\n\n\t// ── inputs: shown in the chosen unit, kept in cm ──\n\ttype Field = 'lengthCm' | 'girthCm' | 'flaccidCm';\n\tconst FIELDS: { key: Field; label: string; hint: string }[] = [\n\t\t{\n\t\t\tkey: 'lengthCm',\n\t\t\tlabel: msg('Length'),\n\t\t\thint: msg('erect, from the base pressed to the bone')\n\t\t},\n\t\t{ key: 'girthCm', label: msg('Girth'), hint: msg('erect, around the middle of the shaft') },\n\t\t{ key: 'flaccidCm', label: msg('Flaccid length'), hint: msg('soft, not stretched') }\n\t];\n\tconst step = $derived(unit === 'cm' ? 0.1 : 0.05);\n\tconst bounds = (key: Field) =>\n\t\tLIMITS[key].map((v) => Number(toUnit(v, unit).toFixed(1))) as [number, number];\n\tconst shown = (s: Size, key: Field) =>\n\t\tNumber(toUnit(s[key], unit).toFixed(unit === 'cm' ? 1 : 2));\n\n\tfunction set(s: Size, key: Field, raw: number): Size {\n\t\tif (!Number.isFinite(raw)) return s;\n\t\tconst next = { ...s, [key]: clamp(fromUnit(raw, unit), LIMITS[key]) };\n\t\t// flaccid never longer than erect\n\t\tif (key === 'lengthCm' && next.flaccidCm > next.lengthCm) next.flaccidCm = next.lengthCm;\n\t\tif (key === 'flaccidCm' && next.flaccidCm > next.lengthCm) next.flaccidCm = next.lengthCm;\n\t\treturn next;\n\t}\n\n\tfunction addThem() {\n\t\tthem = { ...AVERAGE };\n\t}\n\tfunction removeThem() {\n\t\tthem = null;\n\t\tthemName = '';\n\t}\n\n\t// ── sharing: the picture is drawn ahead of the tap (iOS needs the file ready) ──\n\tconst shareUrl = $derived(\n\t\t`${SITE_URL}${lhref(PATH)}?${writeComparison({ you, them, themName, unit, flaccid, object }).toString()}`\n\t);\n\tlet png = $state<Blob | null>(null);\n\tlet touch = $state(false);\n\tlet copied = $state(false);\n\tonMount(() => (touch = isTouchDevice()));\n\t// The PNG is made asynchronously (an image decode and a canvas), so it\n\t// can't be derived: the effect keeps it in step with the picture.\n\t$effect(() => {\n\t\tconst svg = frameSvg(stage, {\n\t\t\ttitle: t('Penis Size Visualizer'),\n\t\t\tsubtitle: t('to scale, next to the average'),\n\t\t\taddress: `ratemyd.app${PATH}`\n\t\t});\n\t\tlet live = true;\n\t\tconst timer = setTimeout(() => {\n\t\t\trenderPng(svg)\n\t\t\t\t.then((b) => {\n\t\t\t\t\tif (live) png = b;\n\t\t\t\t})\n\t\t\t\t.catch(() => {\n\t\t\t\t\tif (live) png = null;\n\t\t\t\t});\n\t\t}, 250);\n\t\treturn () => {\n\t\t\tlive = false;\n\t\t\tclearTimeout(timer);\n\t\t};\n\t});\n\n\tasync function sharePicture() {\n\t\tif (!png) return;\n\t\tconst how = await sharePng(png, 'ratemyd-size-visualizer.png');\n\t\tif (how) trackShare(how, 'size_visualizer');\n\t}\n\n\tfunction copyLink() {\n\t\tif (touch && navigator.share) {\n\t\t\tnavigator.share({ url: shareUrl }).then(\n\t\t\t\t() => trackShare('link', 'size_visualizer'),\n\t\t\t\t() => {}\n\t\t\t);\n\t\t\treturn;\n\t\t}\n\t\tnavigator.clipboard?.writeText(shareUrl).then(() => {\n\t\t\tcopied = true;\n\t\t\ttrackLinkCopy('size_visualizer');\n\t\t\tsetTimeout(() => (copied = false), 2000);\n\t\t});\n\t}\n\n\tconst appLd = $derived(\n\t\tjsonLdScript({\n\t\t\t'@context': 'https://schema.org',\n\t\t\t'@type': 'WebApplication',\n\t\t\tname: t('Penis Size Visualizer'),\n\t\t\turl: `${SITE_URL}${lhref(PATH)}`,\n\t\t\tapplicationCategory: 'UtilityApplication',\n\t\t\toperatingSystem: 'Any',\n\t\t\tinLanguage: lang,\n\t\t\toffers: { '@type': 'Offer', price: '0', priceCurrency: 'USD' }\n\t\t})\n\t);\n\tconst crumbsLd = $derived(\n\t\tjsonLdScript(\n\t\t\tbreadcrumbList([\n\t\t\t\t{ name: t('Home'), url: SITE_URL },\n\t\t\t\t{ name: t('Penis Size Visualizer'), url: `${SITE_URL}${lhref(PATH)}` }\n\t\t\t])\n\t\t)\n\t);\n\tconst avgLen = $derived(fmt(AVERAGE.lengthCm));\n\tconst avgGirth = $derived(fmt(AVERAGE.girthCm));\n</script>\n\n<svelte:head>\n\t{@html appLd}\n\t{@html crumbsLd}\n</svelte:head>\n\n<main class=\"viz\">\n\t<header class=\"hero\">\n\t\t<p class=\"eyebrow\">{t('free · to scale · nothing stored')}</p>\n\t\t<h1>{t('Penis Size Visualizer & Comparison')}</h1>\n\t\t<p class=\"lede\">\n\t\t\t{t(\n\t\t\t\t'Your length and girth drawn to scale, next to the average and next to things you have held.'\n\t\t\t)}\n\t\t</p>\n\t</header>\n\n\t<section class=\"card stage-card\" aria-label={t('Picture')}>\n\t\t<!-- built by stageSvg, which escapes every label (a name can come from the link) -->\n\t\t<div class=\"stage\">{@html stage.svg}</div>\n\t\t<div class=\"bar\">\n\t\t\t<div class=\"seg\" role=\"group\" aria-label={t('State')}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass:on={!flaccid}\n\t\t\t\t\taria-pressed={!flaccid}\n\t\t\t\t\tonclick={() => (flaccid = false)}>{t('Erect')}</button\n\t\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass:on={flaccid}\n\t\t\t\t\taria-pressed={flaccid}\n\t\t\t\t\tonclick={() => (flaccid = true)}>{t('Flaccid')}</button\n\t\t\t\t>\n\t\t\t</div>\n\t\t\t<div class=\"seg unit\" role=\"group\" aria-label={t('Unit')}>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass:on={unit === 'cm'}\n\t\t\t\t\taria-pressed={unit === 'cm'}\n\t\t\t\t\tonclick={() => (unit = 'cm')}>cm</button\n\t\t\t\t>\n\t\t\t\t<button\n\t\t\t\t\ttype=\"button\"\n\t\t\t\t\tclass:on={unit === 'in'}\n\t\t\t\t\taria-pressed={unit === 'in'}\n\t\t\t\t\tonclick={() => (unit = 'in')}>in</button\n\t\t\t\t>\n\t\t\t</div>\n\t\t\t<div class=\"seg wide\" role=\"group\" aria-label={t('Next to')}>\n\t\t\t\t{#each OBJECTS as o (o.key)}\n\t\t\t\t\t<button\n\t\t\t\t\t\ttype=\"button\"\n\t\t\t\t\t\tclass:on={object === o.key}\n\t\t\t\t\t\taria-pressed={object === o.key}\n\t\t\t\t\t\tonclick={() => (object = o.key)}>{t(o.label)}</button\n\t\t\t\t\t>\n\t\t\t\t{/each}\n\t\t\t</div>\n\t\t</div>\n\t\t{#if flaccid}\n\t\t\t<p class=\"note\">{t('The dashed outline is the erect size.')}</p>\n\t\t{/if}\n\t</section>\n\n\t<section class=\"card\">\n\t\t<div class=\"who\"><span class=\"dot you\"></span>{t('You')}</div>\n\t\t{#each FIELDS as f (f.key)}\n\t\t\t{@const [lo, hi] = bounds(f.key)}\n\t\t\t<div class=\"row\">\n\t\t\t\t<label class=\"row-hd\" for=\"you-{f.key}\">\n\t\t\t\t\t<span><b>{t(f.label)}</b><small>{t(f.hint)}</small></span>\n\t\t\t\t\t<span class=\"num\">\n\t\t\t\t\t\t<input\n\t\t\t\t\t\t\tid=\"you-{f.key}\"\n\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\tinputmode=\"decimal\"\n\t\t\t\t\t\t\tmin={lo}\n\t\t\t\t\t\t\tmax={hi}\n\t\t\t\t\t\t\t{step}\n\t\t\t\t\t\t\tvalue={shown(you, f.key)}\n\t\t\t\t\t\t\tonchange={(e) => (you = set(you, f.key, e.currentTarget.valueAsNumber))}\n\t\t\t\t\t\t/><span class=\"u\">{unit}</span>\n\t\t\t\t\t</span>\n\t\t\t\t</label>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"slider you\"\n\t\t\t\t\ttype=\"range\"\n\t\t\t\t\tmin={lo}\n\t\t\t\t\tmax={hi}\n\t\t\t\t\t{step}\n\t\t\t\t\tvalue={shown(you, f.key)}\n\t\t\t\t\toninput={(e) => (you = set(you, f.key, e.currentTarget.valueAsNumber))}\n\t\t\t\t\taria-label={t(f.label)}\n\t\t\t\t/>\n\t\t\t</div>\n\t\t{/each}\n\n\t\t{#if them}\n\t\t\t<div class=\"who them-hd\">\n\t\t\t\t<span class=\"dot them\"></span>\n\t\t\t\t<input\n\t\t\t\t\tclass=\"name\"\n\t\t\t\t\ttype=\"text\"\n\t\t\t\t\tmaxlength=\"16\"\n\t\t\t\t\tbind:value={themName}\n\t\t\t\t\tplaceholder={t('Them')}\n\t\t\t\t\taria-label={t('Name')}\n\t\t\t\t/>\n\t\t\t\t<button type=\"button\" class=\"remove\" onclick={removeThem}>{t('Remove')}</button>\n\t\t\t</div>\n\t\t\t{#each FIELDS as f (f.key)}\n\t\t\t\t{@const [lo, hi] = bounds(f.key)}\n\t\t\t\t{@const size = them}\n\t\t\t\t<div class=\"row\">\n\t\t\t\t\t<label class=\"row-hd\" for=\"them-{f.key}\">\n\t\t\t\t\t\t<span><b>{t(f.label)}</b></span>\n\t\t\t\t\t\t<span class=\"num\">\n\t\t\t\t\t\t\t<input\n\t\t\t\t\t\t\t\tid=\"them-{f.key}\"\n\t\t\t\t\t\t\t\ttype=\"number\"\n\t\t\t\t\t\t\t\tinputmode=\"decimal\"\n\t\t\t\t\t\t\t\tmin={lo}\n\t\t\t\t\t\t\t\tmax={hi}\n\t\t\t\t\t\t\t\t{step}\n\t\t\t\t\t\t\t\tvalue={shown(size, f.key)}\n\t\t\t\t\t\t\t\tonchange={(e) => (them = set(size, f.key, e.currentTarget.valueAsNumber))}\n\t\t\t\t\t\t\t/><span class=\"u\">{unit}</span>\n\t\t\t\t\t\t</span>\n\t\t\t\t\t</label>\n\t\t\t\t\t<input\n\t\t\t\t\t\tclass=\"slider them\"\n\t\t\t\t\t\ttype=\"range\"\n\t\t\t\t\t\tmin={lo}\n\t\t\t\t\t\tmax={hi}\n\t\t\t\t\t\t{step}\n\t\t\t\t\t\tvalue={shown(size, f.key)}\n\t\t\t\t\t\toninput={(e) => (them = set(size, f.key, e.currentTarget.valueAsNumber))}\n\t\t\t\t\t\taria-label={t(f.label)}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t{/each}\n\t\t{:else}\n\t\t\t<button type=\"button\" class=\"add\" onclick={addThem}>\n\t\t\t\t<svg\n\t\t\t\t\twidth=\"18\"\n\t\t\t\t\theight=\"18\"\n\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\tfill=\"none\"\n\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\tstroke-width=\"2.4\"\n\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\taria-hidden=\"true\"><path d=\"M12 5v14M5 12h14\" /></svg\n\t\t\t\t>\n\t\t\t\t{t('Compare with someone')}\n\t\t\t</button>\n\t\t{/if}\n\t</section>\n\n\t<section class=\"card readout\" aria-live=\"polite\">\n\t\t<ul>\n\t\t\t<li>\n\t\t\t\t<b>{t('Longer than {pct}% of men', { pct: pct(lengthPct) })}</b><small\n\t\t\t\t\t>{t('Thicker than {pct}% of men', { pct: pct(girthPct) })}</small\n\t\t\t\t>\n\t\t\t</li>\n\t\t\t<li><span>{growLine}</span></li>\n\t\t\t<li><span>{objectLine}</span></li>\n\t\t\t{#if duoLine}<li><span>{duoLine}</span></li>{/if}\n\t\t\t<li>\n\t\t\t\t<a\n\t\t\t\t\tclass=\"condom\"\n\t\t\t\t\thref=\"{lhref('/tools/condom-size-calculator')}?g={you.girthCm.toFixed(\n\t\t\t\t\t\t1\n\t\t\t\t\t)}&l={you.lengthCm.toFixed(1)}&u={unit}\"\n\t\t\t\t>\n\t\t\t\t\t<span>{t('Condom size: about {w} mm wide', { w: nominalWidthMm(you.girthCm) })}</span>\n\t\t\t\t\t<svg\n\t\t\t\t\t\twidth=\"16\"\n\t\t\t\t\t\theight=\"16\"\n\t\t\t\t\t\tviewBox=\"0 0 24 24\"\n\t\t\t\t\t\tfill=\"none\"\n\t\t\t\t\t\tstroke=\"currentColor\"\n\t\t\t\t\t\tstroke-width=\"2.2\"\n\t\t\t\t\t\tstroke-linecap=\"round\"\n\t\t\t\t\t\tstroke-linejoin=\"round\"\n\t\t\t\t\t\taria-hidden=\"true\"><path d=\"M9 6l6 6-6 6\" /></svg\n\t\t\t\t\t>\n\t\t\t\t</a>\n\t\t\t</li>\n\t\t</ul>\n\t\t<div class=\"actions\">\n\t\t\t<button type=\"button\" class=\"btn primary\" disabled={!png} onclick={sharePicture}>\n\t\t\t\t{touch ? t('Share picture') : t('Save picture')}\n\t\t\t</button>\n\t\t\t<button type=\"button\" class=\"btn\" onclick={copyLink}\n\t\t\t\t>{copied ? t('Link copied') : touch ? t('Share link') : t('Copy link')}</button\n\t\t\t>\n\t\t</div>\n\t</section>\n\n\t<nav class=\"next\" aria-label={t('More size tools')}>\n\t\t<a href={lhref('/tools/penis-size-calculator')}>\n\t\t\t<b>{t('Penis size calculator')}</b><small>{t('Your exact percentile, from 15,521 men')}</small\n\t\t\t>\n\t\t</a>\n\t\t<a href={lhref('/tools/penis-size-chart')}>\n\t\t\t<b>{t('Penis size chart')}</b><small\n\t\t\t\t>{t('Every inch and centimetre, with how rare it is')}</small\n\t\t\t>\n\t\t</a>\n\t\t<a href=\"/rate\">\n\t\t\t<b>{t('Get an AI rating')}</b><small>{t('Six scores on one photo. The first is free.')}</small\n\t\t\t>\n\t\t</a>\n\t</nav>\n\n\t<article class=\"copy\">\n\t\t<!-- RAT-624: \"penis size visualizer\" and its spellings sit at 9–12; the\n\t\t\t page names itself that way once in its own copy. -->\n\t\t<h2>{t('How to use the penis size visualizer')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'Enter your length and girth, erect or flaccid, in centimetres or inches, and the drawing follows at true scale. Put it next to a phone, a soda can or a bank card, add a second size to see two side by side, then save the picture or copy the link, which carries the sizes, never a photo.'\n\t\t\t)}\n\t\t</p>\n\n\t\t<h2>{t('Penis size comparison, to scale')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'The visualizer draws your length and girth at their real proportions next to the average erect penis — {len} long and {girth} around, from 15,521 men measured by clinicians (Veale et al., 2015) — and next to a phone, a soda can and a bank card.',\n\t\t\t\t{ len: avgLen, girth: avgGirth }\n\t\t\t)}\n\t\t</p>\n\n\t\t<h2>{t('Dick size comparison with everyday objects')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'A bank card is {card} tall, a soda can {can} and a 6.1-inch phone {phone}. The average erect penis, {avg}, sits between the can and the phone.',\n\t\t\t\t{\n\t\t\t\t\tcard: fmt(OBJECT_BY_KEY.card.heightCm),\n\t\t\t\t\tcan: fmt(OBJECT_BY_KEY.can.heightCm),\n\t\t\t\t\tphone: fmt(OBJECT_BY_KEY.phone.heightCm),\n\t\t\t\t\tavg: avgLen\n\t\t\t\t}\n\t\t\t)}\n\t\t</p>\n\n\t\t<h2>{t('Grower or shower?')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'In the same study the average penis goes from {soft} flaccid to {hard} erect: {grow} longer, or {pct}%. Grow clearly more than that and you are what people call a grower; clearly less, a shower. Neither says anything about the erect size.',\n\t\t\t\t{\n\t\t\t\t\tsoft: fmt(AVERAGE.flaccidCm),\n\t\t\t\t\thard: avgLen,\n\t\t\t\t\tgrow: fmt(AVERAGE.lengthCm - AVERAGE.flaccidCm),\n\t\t\t\t\tpct: `+${pct(AVERAGE_GROWTH * 100)}`\n\t\t\t\t}\n\t\t\t)}\n\t\t</p>\n\n\t\t<h2>{t('Cock size comparison: two sizes side by side')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'Add a second size — a friend, a partner, an ex — and both are drawn side by side. The comparison lives in the link: share it, or save the picture.'\n\t\t\t)}\n\t\t</p>\n\n\t\t<h2>{t('How to measure')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'Length: erect, along the top, from the base pressed against the pubic bone to the tip. Girth: a soft tape around the middle of the shaft. Flaccid: the same way, soft and not stretched.'\n\t\t\t)}\n\t\t</p>\n\n\t\t<h2>{t('Is anything stored?')}</h2>\n\t\t<p>\n\t\t\t{t(\n\t\t\t\t'No. The sizes stay in your browser, and in the link if you share it. Nothing is sent to us.'\n\t\t\t)}\n\t\t</p>\n\n\t\t<p class=\"fine\">\n\t\t\t{t('Schematic drawing, not a photo. For entertainment and education; not medical advice.')}\n\t\t</p>\n\t</article>\n</main>\n\n<style>\n\t.viz {\n\t\tmax-width: 760px;\n\t\tmargin: 0 auto;\n\t\tpadding: 88px 16px 140px;\n\t\tcolor: #f5f5f7;\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tgap: 16px;\n\t}\n\t.hero {\n\t\tpadding: 8px 4px 12px;\n\t}\n\t.eyebrow {\n\t\tmargin: 0 0 10px;\n\t\tfont-size: 12px;\n\t\tfont-weight: 600;\n\t\tletter-spacing: 0.08em;\n\t\ttext-transform: uppercase;\n\t\tcolor: #8e8e93;\n\t}\n\th1 {\n\t\tmargin: 0 0 10px;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: clamp(32px, 7vw, 52px);\n\t\tfont-weight: 700;\n\t\tletter-spacing: -0.035em;\n\t\tline-height: 1;\n\t}\n\t.lede {\n\t\tmargin: 0;\n\t\tmax-width: 560px;\n\t\tfont-size: 17px;\n\t\tline-height: 1.45;\n\t\tcolor: #a1a1a6;\n\t}\n\n\t.card {\n\t\tbackground: #141414;\n\t\tborder-radius: 22px;\n\t\tpadding: 16px;\n\t}\n\t.stage {\n\t\tbackground: #0f0f10;\n\t\tborder-radius: 16px;\n\t\tpadding: 12px 8px 4px;\n\t}\n\t.stage :global(svg) {\n\t\tdisplay: block;\n\t\twidth: 100%;\n\t\theight: auto;\n\t\tmax-height: 62vh;\n\t}\n\t.bar {\n\t\tdisplay: flex;\n\t\tflex-wrap: wrap;\n\t\tjustify-content: space-between;\n\t\tgap: 8px;\n\t\tmargin-top: 12px;\n\t}\n\t.seg.wide {\n\t\tflex-basis: 100%;\n\t}\n\t.seg.wide button {\n\t\tflex: 1;\n\t}\n\t@media (min-width: 640px) {\n\t\t/* one line on a wide screen: state · objects · unit */\n\t\t.bar {\n\t\t\tflex-wrap: nowrap;\n\t\t}\n\t\t.seg.wide {\n\t\t\tflex-basis: auto;\n\t\t\torder: 1;\n\t\t}\n\t\t.seg.unit {\n\t\t\torder: 2;\n\t\t}\n\t}\n\t.seg {\n\t\tdisplay: inline-flex;\n\t\tbackground: #1c1c1e;\n\t\tborder-radius: 10px;\n\t\tpadding: 2px;\n\t}\n\t.seg button {\n\t\tborder: 0;\n\t\tbackground: transparent;\n\t\tcolor: #a1a1a6;\n\t\tmin-height: 32px;\n\t\tpadding: 0 12px;\n\t\tborder-radius: 8px;\n\t\tfont: 600 13px var(--font-body);\n\t\tcursor: pointer;\n\t\t-webkit-tap-highlight-color: transparent;\n\t}\n\t.seg button.on {\n\t\tbackground: #3a3a3c;\n\t\tcolor: #f5f5f7;\n\t\tbox-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);\n\t}\n\t.note {\n\t\tmargin: 10px 2px 0;\n\t\tfont-size: 13px;\n\t\tcolor: #8e8e93;\n\t}\n\n\t.who {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tgap: 8px;\n\t\tfont-weight: 700;\n\t\tfont-size: 15px;\n\t\tpadding: 2px 2px 6px;\n\t}\n\t.them-hd {\n\t\tmargin-top: 18px;\n\t\tpadding-top: 16px;\n\t\tborder-top: 1px solid #262628;\n\t}\n\t.dot {\n\t\twidth: 10px;\n\t\theight: 10px;\n\t\tborder-radius: 50%;\n\t\tflex-shrink: 0;\n\t}\n\t.dot.you {\n\t\tbackground: #ff4d6d;\n\t}\n\t.dot.them {\n\t\tbackground: #8b93ff;\n\t}\n\t.name {\n\t\tflex: 1;\n\t\tmin-width: 0;\n\t\tborder: 0;\n\t\tbackground: transparent;\n\t\tcolor: #f5f5f7;\n\t\tfont: 700 15px var(--font-body);\n\t\tpadding: 6px 0;\n\t\toutline: none;\n\t}\n\t.name::placeholder {\n\t\tcolor: #8e8e93;\n\t}\n\t.remove {\n\t\tborder: 0;\n\t\tbackground: transparent;\n\t\tcolor: #8e8e93;\n\t\tfont: 500 14px var(--font-body);\n\t\tmin-height: 36px;\n\t\tpadding: 0 4px;\n\t\tcursor: pointer;\n\t}\n\t.row {\n\t\tpadding: 12px 2px;\n\t\tborder-top: 1px solid #1f1f21;\n\t}\n\t.row:first-of-type {\n\t\tborder-top: 0;\n\t}\n\t.row-hd {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t}\n\t.row-hd b {\n\t\tdisplay: block;\n\t\tfont-size: 15px;\n\t\tfont-weight: 600;\n\t}\n\t.row-hd small {\n\t\tdisplay: block;\n\t\tmargin-top: 2px;\n\t\tfont-size: 12px;\n\t\tcolor: #8e8e93;\n\t}\n\t.num {\n\t\tdisplay: inline-flex;\n\t\talign-items: baseline;\n\t\tgap: 4px;\n\t\tflex-shrink: 0;\n\t}\n\t.num input {\n\t\twidth: 4.6ch;\n\t\tborder: 0;\n\t\tborder-radius: 8px;\n\t\tbackground: #1c1c1e;\n\t\tcolor: #f5f5f7;\n\t\tfont: 700 17px var(--font-body);\n\t\tfont-variant-numeric: tabular-nums;\n\t\ttext-align: right;\n\t\tpadding: 6px 8px;\n\t\t-moz-appearance: textfield;\n\t\tappearance: textfield;\n\t}\n\t.num input::-webkit-outer-spin-button,\n\t.num input::-webkit-inner-spin-button {\n\t\t-webkit-appearance: none;\n\t\tmargin: 0;\n\t}\n\t.num input:focus-visible {\n\t\toutline: 2px solid #f5f5f7;\n\t\toutline-offset: 1px;\n\t}\n\t.u {\n\t\tfont-size: 13px;\n\t\tcolor: #8e8e93;\n\t\twidth: 1.6em;\n\t}\n\t.slider {\n\t\twidth: 100%;\n\t\tmargin: 12px 0 2px;\n\t\taccent-color: #ff4d6d;\n\t\theight: 28px;\n\t}\n\t.slider.them {\n\t\taccent-color: #8b93ff;\n\t}\n\t.add {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: center;\n\t\tgap: 8px;\n\t\twidth: 100%;\n\t\tmargin-top: 10px;\n\t\tmin-height: 48px;\n\t\tborder: 0;\n\t\tborder-radius: 14px;\n\t\tbackground: #1c1c1e;\n\t\tcolor: #f5f5f7;\n\t\tfont: 600 15px var(--font-body);\n\t\tcursor: pointer;\n\t}\n\n\t.readout ul {\n\t\tlist-style: none;\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\t.readout li {\n\t\tpadding: 10px 2px;\n\t\tborder-top: 1px solid #1f1f21;\n\t\tfont-size: 15px;\n\t\tline-height: 1.4;\n\t\tcolor: #d1d1d6;\n\t}\n\t.readout li:first-child {\n\t\tborder-top: 0;\n\t\tpadding-top: 2px;\n\t}\n\t.readout li b {\n\t\tdisplay: block;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 22px;\n\t\tletter-spacing: -0.02em;\n\t\tcolor: #f5f5f7;\n\t}\n\t.readout li small {\n\t\tdisplay: block;\n\t\tmargin-top: 2px;\n\t\tfont-size: 14px;\n\t\tcolor: #a1a1a6;\n\t}\n\t.condom {\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tjustify-content: space-between;\n\t\tgap: 12px;\n\t\tcolor: #f5f5f7;\n\t\ttext-decoration: none;\n\t}\n\t.condom svg {\n\t\tflex-shrink: 0;\n\t\tcolor: #8e8e93;\n\t}\n\t.actions {\n\t\tdisplay: flex;\n\t\tgap: 10px;\n\t\tmargin-top: 12px;\n\t}\n\t.btn {\n\t\tflex: 1;\n\t\tmin-height: 50px;\n\t\tborder: 0;\n\t\tborder-radius: 14px;\n\t\tbackground: #2c2c2e;\n\t\tcolor: #f5f5f7;\n\t\tfont: 600 15px var(--font-body);\n\t\tcursor: pointer;\n\t}\n\t.btn.primary {\n\t\tbackground: #ff4d6d;\n\t\tcolor: #fff;\n\t}\n\t.btn:disabled {\n\t\topacity: 0.5;\n\t\tcursor: default;\n\t}\n\n\t.next {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: 1fr;\n\t\tgap: 10px;\n\t}\n\t@media (min-width: 640px) {\n\t\t.next {\n\t\t\tgrid-template-columns: 1fr 1fr 1fr;\n\t\t}\n\t}\n\t.next a {\n\t\tdisplay: block;\n\t\tbackground: #141414;\n\t\tborder-radius: 18px;\n\t\tpadding: 16px;\n\t\tcolor: #f5f5f7;\n\t\ttext-decoration: none;\n\t}\n\t.next b {\n\t\tdisplay: block;\n\t\tfont-size: 16px;\n\t}\n\t.next small {\n\t\tdisplay: block;\n\t\tmargin-top: 4px;\n\t\tfont-size: 13px;\n\t\tcolor: #8e8e93;\n\t}\n\n\t.copy {\n\t\tpadding: 16px 4px 0;\n\t}\n\t.copy h2 {\n\t\tmargin: 28px 0 8px;\n\t\tfont-family: var(--font-display);\n\t\tfont-size: 22px;\n\t\tfont-weight: 700;\n\t\tletter-spacing: -0.02em;\n\t}\n\t.copy p {\n\t\tmargin: 0;\n\t\tfont-size: 16px;\n\t\tline-height: 1.6;\n\t\tcolor: #a1a1a6;\n\t}\n\t.copy .fine {\n\t\tmargin-top: 28px;\n\t\tfont-size: 13px;\n\t\tcolor: #6e6e73;\n\t}\n\tbutton:focus-visible,\n\t.next a:focus-visible {\n\t\toutline: 2px solid #f5f5f7;\n\t\toutline-offset: 2px;\n\t}\n</style>\n"],"version":3}