1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["_astro/photoswipe.DZU1WGtr.css","_astro/intlTelInput.Cn5QrOQz.css","_astro/leaflet.CIGW-MKW.css"])))=>i.map(i=>d[i]); 2import{_ as y}from"./preload-helper.CVfkMyKi.js";import{c as It}from"./api-client.hgVDe6Ry.js";import{i as Ie,t as Lt}from"./favorites.BCxHWLc9.js";import{e as r}from"./escape.qu-ZFMIa.js";import{r as O}from"./after-first-paint.D-4buome.js";import{b as At,f as X,a as Tt,M as Nt}from"./format-time.BAS8yJOB.js";import{g as Rt,r as Mt}from"./placeholders.xJvJIYIu.js";import{e as Ot,b as Pt,c as qt}from"./survey-gating.DFXbukXn.js";import{w as Ft,t as T}from"./FichaBasic.astro_astro_type_script_index_0_lang.Mcy9mbhL.js";import{e as Le}from"./recaptcha.B2AuMYMs.js";function Be(o){return r(o).replace(/<b>/g,"<b>").replace(/<\/b>/g,"</b>").replace(/<u>/g,"<u>").replace(/<\/u>/g,"</u>")}function jt(o){return r(o).replace(/<em>/g,"<em>").replace(/<\/em>/g,"</em>")}function Dt(o){if(!Number.isFinite(o)||o<=0)return"";const e=new Date(o*1e3),t=i=>i.toString().padStart(2,"0");return`${t(e.getDate())}/${t(e.getMonth()+1)}/${e.getFullYear()} ${t(e.getHours())}:${t(e.getMinutes())}`}function Ht(o){return r(o).replace(/<em>/g,"<em>").replace(/<\/em>/g,"</em>")}const Vt=4,Bt=4;function Wt(o=navigator){const e=o.deviceMemory,t=o.hardwareConcurrency;return typeof e=="number"&&e<=Vt||typeof t=="number"&&t<=Bt}function We(o){return`<svg viewBox="0 0 24 24" width="${o}" height="${o}" fill="none" stroke="currentColor" stroke-width="2" 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>`}function ze(o){return`<svg viewBox="0 0 24 24" width="${o}" height="${o}" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M15 3h6v6M9 21H3v-6M21 3l-7 7M3 21l7-7"/></svg>`}const p=(o,e,t={})=>{const i=t.fill??"none",a=t.strokeWidth??2;return`<svg viewBox="0 0 24 24" width="${o}" height="${o}" fill="${i}" stroke="currentColor" stroke-width="${a}" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">${e}</svg>`},Y=o=>p(o,'<polyline points="20 6 9 17 4 12"/>'),Z=o=>p(o,'<line x1="18" y1="6" x2="6" y2="18"/><line x1="6" y1="6" x2="18" y2="18"/>'),zt=o=>p(o,'<path d="M7 22V2l10 5-10 5"/>',{fill:"currentColor",strokeWidth:1}),Gt=o=>p(o,'<line x1="19" y1="12" x2="5" y2="12"/><polyline points="12 19 5 12 12 5"/>'),Ge=o=>p(o,'<line x1="5" y1="12" x2="19" y2="12"/><polyline points="12 5 19 12 12 19"/>'),Ut=o=>p(o,'<circle cx="12" cy="12" r="1"/><circle cx="19" cy="12" r="1"/><circle cx="5" cy="12" r="1"/>'),Ue=o=>p(o,'<circle cx="18" cy="5" r="3"/><circle cx="6" cy="12" r="3"/><circle cx="18" cy="19" r="3"/><line x1="8.59" y1="13.51" x2="15.42" y2="17.49"/><line x1="15.41" y1="6.51" x2="8.59" y2="10.49"/>'),Jt=o=>p(o,'<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"/>'),Kt=o=>p(o,'<polyline points="3 6 5 6 21 6"/><path d="M19 6l-2 14a2 2 0 0 1-2 2H9a2 2 0 0 1-2-2L5 6"/><path d="M10 11v6"/><path d="M14 11v6"/><path d="M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"/>'),Xt=o=>p(o,'<circle cx="12" cy="12" r="10"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="16" x2="12.01" y2="16"/>'),Yt=o=>p(o,'<circle cx="12" cy="12" r="10"/><line x1="12" y1="16" x2="12" y2="12"/><line x1="12" y1="8" x2="12.01" y2="8"/>'),Ae=o=>p(o,'<path d="m9 18 6-6-6-6"/>'),Zt=o=>p(o,'<path d="m15 18-6-6 6-6"/>'),Qt=o=>p(o,'<line x1="2" x2="22" y1="2" y2="22"/><path d="M10.41 10.41a2 2 0 1 1-2.83-2.83"/><line x1="13.5" x2="6" y1="13.5" y2="21"/><line x1="18" x2="21" y1="12" y2="15"/><path d="M3.59 3.59A1.99 1.99 0 0 0 3 5v14a2 2 0 0 0 2 2h14c.55 0 1.052-.22 1.41-.59"/><path d="M21 15V5a2 2 0 0 0-2-2H9"/>'),Te=o=>p(o,'<path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/><path d="M12 8v4"/><path d="M12 16h.01"/>'),ei=o=>p(o,'<path d="M10.68 13.31a16 16 0 0 0 3.41 2.6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7 2 2 0 0 1 1.72 2v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.42 19.42 0 0 1-3.33-2.67m
2-2.67-3.34a19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91"/><line x1="22" x2="2" y1="2" y2="22"/>'),Ne=o=>p(o,'<path d="m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3Z"/><path d="M12 9v4"/><path d="M12 17h.01"/>'),ti=o=>p(o,'<path d="M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17"/><path d="m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9"/><path d="m2 16 6 6"/><circle cx="16" cy="9" r="2.9"/><circle cx="6" cy="5" r="3"/>',{strokeWidth:1.7}),Re=o=>p(o,'<path d="M22 11.08V12a10 10 0 1 1-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/>'),ii=o=>p(o,'<path d="M10.268 21a2 2 0 0 0 3.464 0"/><path d="M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326"/>'),ai=o=>p(o,'<path d="M20.84 4.61a5.5 5.5 0 0 0-7.78 0L12 5.67l-1.06-1.06a5.5 5.5 0 0 0-7.78 7.78l1.06 1.06L12 21.23l7.78-7.78 1.06-1.06a5.5 5.5 0 0 0 0-7.78z"/>'),Me=o=>p(o,'<path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72 12.84 12.84 0 0 0 .7 2.81 2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45 12.84 12.84 0 0 0 2.81.7A2 2 0 0 1 22 16.92z"/>'),G=o=>p(o,'<path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/>'),ri=o=>p(o,'<path d="M11.562 3.266a.5.5 0 0 1 .876 0L15.39 8.87a1 1 0 0 0 1.516.294L21.183 5.5a.5.5 0 0 1 .798.519l-2.834 10.246a1 1 0 0 1-.956.734H5.81a1 1 0 0 1-.957-.734L2.02 6.02a.5.5 0 0 1 .798-.519l4.276 3.664a1 1 0 0 0 1.516-.294z"/><path d="M5 21h14"/>',{fill:"currentColor",strokeWidth:1}),oi=o=>p(o,'<polygon points="3 6 9 3 15 6 21 3 21 18 15 21 9 18 3 21"/><line x1="9" y1="3" x2="9" y2="18"/><line x1="15" y1="6" x2="15" y2="21"/>'),si=o=>p(o,'<polygon points="3 11 22 2 13 21 11 13 3 11"/>'),ni=o=>p(o,'<path d="M2 12s3-7 10-7 10 7 10 7-3 7-10 7-10-7-10-7Z"/><circle cx="12" cy="12" r="3"/>'),Oe=o=>p(o,'<path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/><polyline points="15 3 21 3 21 9"/><line x1="10" y1="14" x2="21" y2="3"/>'),li=o=>ze(o),di=o=>p(o,'<polygon points="6 3 20 12 6 21 6 3"/>',{fill:"currentColor",strokeWidth:0}),Q=o=>p(o,'<path d="m22 8-6 4 6 4V8Z"/><rect width="14" height="12" x="2" y="6" rx="2" ry="2"/>'),ci=o=>p(o,'<path d="m5 8 6 6"/><path d="m4 14 6-6 2-3"/><path d="M2 5h12"/><path d="M7 2h1"/><path d="m22 22-5-10-5 10"/><path d="M14 18h6"/>'),pi=o=>p(o,'<circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/>'),hi=o=>p(o,'<rect x="3" y="4" width="18" height="18" rx="2" ry="2"/><line x1="16" y1="2" x2="16" y2="6"/><line x1="8" y1="2" x2="8" y2="6"/><line x1="3" y1="10" x2="21" y2="10"/>'),ee=o=>p(o,'<circle cx="12" cy="12" r="10"/><line x1="2" y1="12" x2="22" y2="12"/><path d="M12 2a15.3 15.3 0 0 1 4 10 15.3 15.3 0 0 1-4 10 15.3 15.3 0 0 1-4-10 15.3 15.3 0 0 1 4-10z"/>'),q=o=>We(o),mi=o=>p(o,'<path d="M20 21v-8a2 2 0 0 0-2-2H6a2 2 0 0 0-2 2v8"/><path d="M4 16s.5-1 2-1 2.5 2 4 2 2.5-2 4-2 2.5 2 4 2 2-1 2-1"/><path d="M2 21h20"/><path d="M7 8v3"/><path d="M12 8v3"/><path d="M17 8v3"/><path d="M7 4h.01"/><path d="M12 4h.01"/><path d="M17 4h.01"/>'),ui=o=>`<svg viewBox="0 0 24 24" width="${o}" height="${o}" fill="currentColor" aria-hidden="true"><path d="M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.148-.67.15-.197.297-.767.967-.94 1.165-.173.198-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.709.306 1.262.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893A11.821 11.821 0 0 0 20.464 3.488"/></svg>`,_i=o=>`<svg viewBox="0 0 24 24" width="${o}" height="${o}" fill="currentColor" aria-hidden="true"><path d="M11.944 0A12 12 0 0 0 0 12a12 12 0 0 0 12 12 12 12 0 0 0 12-12A12 12 0 0 0 12 0a12 12 0 0 0-.056 0zm4.962 7.224c.1-.002.321.023.465.14a.506.506 0 0 1 .171.325c.016.093.036.306.02.472-.18 1.898-.9
262 6.502-1.36 8.627-.168.9-.499 1.201-.82 1.23-.696.065-1.225-.46-1.9-.902-1.056-.693-1.653-1.124-2.678-1.8-1.185-.78-.417-1.21.258-1.91.177-.184 3.247-2.977 3.307-3.23.007-.032.014-.15-.056-.212s-.174-.041-.249-.024c-.106.024-1.793 1.14-5.061 3.345-.48.33-.913.49-1.302.48-.428-.008-1.252-.241-1.865-.44-.752-.245-1.349-.374-1.297-.789.027-.216.325-.437.893-.663 3.498-1.524 5.83-2.529 6.998-3.014 3.332-1.386 4.025-1.627 4.476-1.635z"/></svg>`,vi={instagram:o=>p(o,'<rect x="2" y="2" width="20" height="20" rx="5" ry="5"/><path d="M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z"/><line x1="17.5" y1="6.5" x2="17.51" y2="6.5"/>'),facebook:o=>p(o,'<path d="M18 2h-3a5 5 0 0 0-5 5v3H7v4h3v8h4v-8h3l1-4h-4V7a1 1 0 0 1 1-1h3z"/>'),x:o=>`<svg viewBox="0 0 24 24" width="${o}" height="${o}" fill="currentColor" aria-hidden="true"><path d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"/></svg>`,privacy:o=>`<svg viewBox="0 0 14 16" width="${o}" height="${o}" fill="currentColor" aria-hidden="true"><path d="M4.7025 12.4252L4.80465 12.2539L5.38004 11.2895L6.05927 10.1505C6.26159 9.80965 6.15686 9.36475 5.82499 9.15689C5.39781 8.88772 5.08302 8.48811 4.90939 8.03189C4.73526 7.57525 4.7026 7.06151 4.8392 6.56408C4.9754 6.06828 5.2637 5.64898 5.64391 5.3532C6.02374 5.05813 6.49578 4.88667 6.9993 4.88667C7.50282 4.88667 7.97437 5.05813 8.35409 5.3532C8.73421 5.64898 9.0228 6.06828 9.1589 6.56408C9.2952 7.06151 9.26274 7.57505 9.08871 8.03168C8.91508 8.48811 8.60029 8.88772 8.17311 9.15679C7.84134 9.36465 7.73651 9.80955 7.93902 10.1504L8.98438 11.9031L9.29868 12.43C8.95986 12.5864 8.60773 12.7073 8.24727 12.792C7.84074 12.8873 7.41526 12.9175 7.00029 12.9175C6.95989 12.9185 6.91978 12.919 6.87948 12.919C6.12797 12.919 5.38501 12.7505 4.7025 12.4251M2.52126 3.75586C3.22521 2.7867 4.2246 2.04561 5.40834 1.68455C6.59486 1.32297 7.82774 1.38366 8.93256 1.80153C10.0372 2.2191 11.0125 2.99273 11.687 4.05715C12.3621 5.12248 12.6555 6.35346 12.5802 7.56098C12.5048 8.76819 12.0606 9.95031 11.2593 10.9169C11.0259 11.1981 10.7717 11.4513 10.4994 11.6754L10.1839 11.1473L9.47181 9.95296C9.88568 9.56221 10.2008 9.08304 10.4004 8.55848C10.6834 7.81606 10.7365 6.98134 10.515 6.17385C10.2924 5.36401 9.82245 4.67983 9.20298 4.19831C8.58351 3.71649 7.81563 3.43692 6.9992 3.43692C6.18277 3.43692 5.41439 3.71649 4.79512 4.19831C4.17605 4.67972 3.70549 5.36391 3.48332 6.17385C3.26144 6.98144 3.31465 7.81627 3.59748 8.55848C3.79722 9.08325 4.11222 9.56221 4.52619 9.95296L1.85285 14.4356C1.82386 14.4839 1.78306 14.5188 1.73779 14.5373C1.69222 14.5555 1.63792 14.5579 1.58292 14.5424C1.52951 14.5266 1.48603 14.4961 1.45645 14.4566C1.42776 14.4173 1.41098 14.365 1.41098 14.3058V7.19084H1.4082C1.4084 5.92192 1.81611 4.72613 2.52116 3.75596M5.01134 0.297417C3.52402 0.750988 2.27089 1.67843 1.39112 2.88961C0.511756 4.09978 0.0029782 5.59686 0.00277965 7.19084H0V14.3058C0 14.6867 0.120816 15.0416 0.332468 15.3283C0.543623 15.6152 0.843926 15.831 1.2028 15.9351C1.56009 16.0387 1.92472 16.0156 2.25024 15.885C2.57576 15.7539 2.85899 15.5155 3.05426 15.1886L3.22967 14.8946H3.22948L3.96023 13.6695C4.90849 14.1391 5.94769 14.3823 7.00029 14.3813C7.02918 14.3813 7.19328 14.3779 7.22614 14.3788C7.67456 14.3637 8.1198 14.3045 8.55571 14.2022C9.99072 13.8656 11.3236 13.0644 12.3285 11.8514C13.3344 10.6381 13.8914 9.15923 13.9856 7.65155C14.0799 6.14366 13.7117 4.60435 12.8666 3.26985C12.0205 1.93474 10.7986 0.964871 9.41771 0.442555C8.64963 0.151972 7.83221 0 7.00208 0C6.34012 0 5.67022 0.0967931 5.01134 0.297315"/></svg>`};function fi(o,e){return(vi[o]??ee)(e)}function Je(o,e,t,i){const a=Number(o.width)||0,s=Number(o.height)||0,n=o.verified?`<span class="em-photo-verified-badge" aria-label="${r(i.photo_verified_aria)}">${q(12)}<span>${r(i.verified_label)}</span></span>`:"";return`<div class="em-photo-tile-wrap"> 3 <button type="button" class="em-photo-tile" data-photo-idx="${e}"> 4 <img src="${r(o.url)}" alt="" loading="lazy" width="${a}" height="${s}"> 5 ${n}
6 <span class="em-photo-tile-counter" aria-hidden="true">${e+1}/${t}</span> 7 <span class="em-photo-tile-zoom" aria-hidden="true">${li(14)}</span> 8 </button> 9 <button type="button" class="em-photo-tile-share" data-share-photo aria-label="${r(i.share_photo_aria)}">${Ue(14)}</button> 10 </div>`}function Ke(o,e,t){return`<button type="button" class="em-video-tile" data-video-idx="${e}" data-video-url="${r(o.url)}"> 11 <img src="${r(o.poster)}" alt="" loading="lazy"> 12 <span class="em-video-tile-play" aria-hidden="true">${di(38)}</span> 13 <span class="em-video-tile-counter" aria-hidden="true">${e+1}/${t}</span> 14 ${o.duration>0?`<span class="em-video-tile-duration">${X(o.duration)}</span>`:""} 15 </button>`}function Pe(o,e,t){const i=e==="photos"?o.locked_header_photos_one:o.locked_header_videos_one,a=e==="photos"?o.locked_header_photos_many:o.locked_header_videos_many,s=(t===1?i:a).replace("{n}",String(t)),n=e==="photos"?o.locked_unlock_photos:o.locked_unlock_videos,d=e==="photos"?o.locked_subtitle:o.locked_subtitle_videos,l=n.replace("{n}",String(t)),h=e==="photos"?q(14):Q(14);return` 16 <article class="em-locked-tile" data-locked-tile="${e}"> 17 <div class="em-locked-tile-header"> 18 ${h} 19 <span>${r(s)}</span> 20 </div> 21 <div class="em-locked-tile-circle">18+</div> 22 <span class="em-locked-tile-pill">${Y(12)} ${r(o.locked_pill_free)}</span> 23 <h4 class="em-locked-tile-title">${Ht(o.locked_title)}</h4> 24 <p class="em-locked-tile-subtitle">${r(d)}</p> 25 <button type="button" class="em-locked-tile-cta" data-locked-cta="${e}"> 26 <span>${r(l)}</span> 27 ${Ge(16)} 28 </button> 29 <span class="em-locked-tile-footer">${pi(12)} ${r(o.locked_footer)}</span> 30 </article> 31 `}function gi(o,e,t={}){const i=o.ficha,a=new Proxy(e,{get:(c,f)=>typeof f=="string"&&f in c?c[f]:""}),s=t.adConversionStrings??{remove_ad:"Remover anúncio"},{lat:n,lng:d}=i.geocode??{lat:0,lng:0},l=Number.isFinite(n)&&Number.isFinite(d)&&!(n===0&&d===0),h=`https://www.google.com/maps/search/?api=1&query=${n},${d}`,m=`https://maps.google.com/?saddr=&daddr=${n},${d}`,v=`https://www.google.com/maps?q=${n},${d}&layer=c&cbll=${n},${d}&cbp=0,0,0,0,0`,u=i.score_reliability!=null&&i.reliability_breakdown!=null?(()=>{const c=r(JSON.stringify({title:a.reliability_title,score_aria:a.reliability_score_aria,saber_mais:a.reliability_saber_mais,modal_title:a.reliability_modal_title,modal_intro:a.reliability_modal_intro,modal_close_aria:a.reliability_modal_close_aria,modal_cta:a.reliability_modal_cta,badge_identity_verified:a.reliability_badge_identity_verified,badge_selfie_verified:a.reliability_badge_selfie_verified,badge_photos_verified:a.reliability_badge_photos_verified,badge_phone_verified:a.reliability_badge_phone_verified,badge_ad_age:a.reliability_badge_ad_age,badge_last_verification:a.reliability_badge_last_verification,badge_activity_level:a.reliability_badge_activity_level,badge_ad_quality:a.reliability_badge_ad_quality,badge_location_coherence:a.reliability_badge_location_coherence,modal_identity_verified:a.reliability_modal_identity_verified,modal_selfie_verified:a.reliability_modal_selfie_verified,modal_photos_verified:a.reliability_modal_photos_verified,modal_phone_verified:a.reliability_modal_phone_verified,modal_ad_age:a.reliability_modal_ad_age,modal_last_verification:a.reliability_modal_last_verification,modal_activity_level:a.reliability_modal_activity_level,modal_ad_quality:a.reliability_modal_ad_quality,modal_location_coherence:a.reliability_modal_location_coherence}));return`<div class="em-section em-s-trust"><ficha-reliability data-score="${i.score_reliability}" data-breakdown="${r(JSON.stringify(i.reliability_breakdown))}" data-strings="${c}"></ficha-reliability></div>`})():"",b=(i.cover_state??"public")==="public"?i.photos:[{url:Rt(i.id,i.tier?.slug??"").photo,width:600,height:800},...i.photos],S=r(JSON.stringify(b)),k=b.length+(i.private_photo_count??0),ae=(i.videos?.length??0)+(i.private_video_count??0),E=i.price_table.length>0?i.price_table.map(c=>`${r(c.duration)} <span class="em-rate-price">${r(c.formatted??String(c.value))}</span>`).join(" / "):"",Qe=E?`<div class="em-rates"><div class="em-rates-title">${r(a.cachets_title)}</div><div class="em-rates-row">${E}</div></div>`:"",re=b.slice(1),et=i.any_photo_verified?`<div class="em-photos-info-badge">${Y(14)}<span>
31${r(a.photos_section_verified_info)}</span></div>`:"",oe=t.ageGateActive??!1,se=oe&&i.private_photo_count>0?Pe(a,"photos",i.private_photo_count):"",ne=oe&&i.private_video_count>0?Pe(a,"videos",i.private_video_count):"",tt=re.length>0||se?`<section class="em-section em-s-photos"> 32 ${et} 33 <h3 class="em-box-title">${q(14)} ${r(a.photos_title)}</h3> 34 <div class="em-photos-grid">${re.map((c,f)=>Je(c,f+1,k,a)).join("")+se}</div> 35 </section>`:"",it=i.city?` â ${r(i.city)}`:"",at=l?`<section class="em-section em-s-map em-map" data-em-defer> 36 <div class="em-box"> 37 <h3 class="em-box-title">${G(14)} ${r(a.location_title)}${it}</h3> 38 <ficha-map data-lat="${n}" data-lng="${d}"></ficha-map> 39 <div class="em-map-actions"> 40 <a href="${m}" target="_blank" rel="noopener" class="em-map-action">${si(18)} ${r(a.directions)}</a> 41 <a href="${v}" target="_blank" rel="noopener" class="em-map-action">${ni(18)} ${r(a.street_view)}</a> 42 <a href="${h}" target="_blank" rel="noopener" class="em-map-action">${Oe(18)} ${r(a.open_maps)}</a> 43 </div> 44 </div> 45 </section>`:"",le=o.related??[],rt=i.location?.city??i.city??"",ot=r(a.related_title??"").replace("{city}",r(rt)),st=le.length>0?`<section class="em-section em-s-related" data-em-defer> 46 <h3 class="em-related-title"> 47 <span class="em-related-title-icon" aria-hidden="true">${ri(18)}</span> 48 ${ot} 49 </h3> 50 <div class="em-related-track-wrap" data-related-track-wrap> 51 <ol class="em-related-track" data-related-track> 52 ${le.map(c=>{const f=At(c,c.tier??"basic"),w=Mt({id:c.id,tier:c.tier??"basic",photo:c.photo,photo_mobile:c.photo_mobile,photo_mobile_small:c.photo_mobile_small});return` 53 <li class="em-related-item"> 54 <button type="button" class="em-related-card" data-related-open="${r(c.id)}" aria-label="${r(c.name)}"> 55 <span class="em-related-card-photo"> 56 <img class="em-related-card-img" src="${r(w.photo)}" alt="" loading="lazy"> 57 </span> 58 <span class="em-related-card-name">${r(c.name)}</span> 59 </button> 60 <eg-fav-btn class="em-related-fav" data-ad-id="${r(c.id)}" data-snapshot="${r(f)}" data-label-add="${r(a.fav_add??"")}" data-label-remove="${r(a.fav_remove??"")}"></eg-fav-btn> 61 </li>`}).join("")} 62 </ol> 63 </div> 64 <div class="em-related-dots" data-related-dots hidden></div> 65 </section>`:"",nt=i.description?`<section class="em-section em-s-description"> 66 <div class="em-box"> 67 <h3 class="em-box-title">${r(a.description_title)}</h3> 68 <div class="em-desc" data-clamped> 69 <p class="em-desc-text">${r(i.description)}</p> 70 <button type="button" class="em-desc-toggle" data-desc-toggle hidden> 71 <span class="more-label">${r(a.read_more)}</span> 72 <span class="less-label">${r(a.read_less)}</span> 73 </button> 74 </div> 75 </div> 76 </section>`:"",lt=t.prevId?"":'aria-disabled="true"',dt=t.nextId?"":'aria-disabled="true"',ct=i.age>0?`${i.name}, ${i.age}`:i.name,pt=i.age>0?`${i.age} ${i.age===1?a.age_year:a.age_years}`:"",de=[i.nationality.name?r(i.nationality.name):"",pt].filter(Boolean).join(" · "),ce=i.location?.city??i.city,ht=ce?`<span class="em-pill em-pill-location">${G(12)} <span>${r(ce)}</span></span>`:"",pe=i.age>0?`<div class="em-stat-row">${mi(14)}<span class="em-stat-label">${r(a.stat_age)}</span><span class="em-stat-value">${i.age}</span></div>`:"",he=i.nationality.name?`<div class="em-stat-row">${ee(14)}<span class="em-stat-label">${r(a.stat_nationality)}</span><span class="em-stat-value">${r(i.nationality.name)}</span></div>`:"",$=i.location??{city:i.city,region:"",area:null,areas:[],landing_path:null},me=$.city||i.city,ue=$.region??"",_e=$.area,I=$.landing_path?$.landing_path.replace(/^\/+/,""):null,F=$.areas??[],ve=_e?F.findIndex(c=>c.toLowerCase()===_e.toLowerCase()):-1,fe=!!I&&ve>=0,mt=!!I&&!fe,j=me?r(me):"",ge=j&&mt?`<a class="em-location-link" href="/${r(I)}">${j}</a>`:j,ut=ue?` (${r(ue)})`:"",be=ge?`${ge}${ut}`:"",ye=be?`<div class="em-stat-row">${G(14)}<span class="em-stat-label">${r(a.stat_city)}</span><span class="em-stat-value">${be}</span></div>`:"",_t=F.map((c,f)=>fe&&f===ve?`<a class="em-location-link" href="/${r(I)}">${r(c)}</a>`:r(c)).join(", "),Se=F.length>0?`<div class="em-stat-row">${oi(14)}<span class="em-stat-label">${r(a.stat_areas)}</span><span class="em-stat-value">${_t}</span></div>`:"",we=(i.languages?.length??0)>
760?`<div class="em-stat-row">${ci(14)}<span class="em-stat-label">${r(a.stat_languages)}</span><span class="em-stat-value">${r(i.languages.join(", "))}</span></div>`:"",Ce=i.socials??[],$e=Ce.length>0?`<div class="em-stat-row em-stat-row-socials">${ee(14)}<span class="em-stat-label">${r(a.stat_socials)}</span><div class="em-socials-list">${Ce.map(c=>{const f=/^https?:\/\//i.test(c.url)?c.url:"#";return`<a class="em-social-link" href="${r(f)}" target="_blank" rel="nofollow noopener" aria-label="${r(c.name)}">${fi(c.slug,16)}</a>`}).join("")}</div></div>`:"";let L="";if(i.website)try{L=new URL(i.website).hostname.replace(/^www\./i,"")}catch{L=i.website.replace(/^https?:\/\//i,"").replace(/^www\./i,"").split("/")[0]??""}const ke=L?`<a class="em-website-link" href="/redirect/web-${r(i.id)}" target="_blank" rel="nofollow noopener noreferrer">${r(L)}</a>`:"",xe=ke?`<div class="em-stat-row em-stat-row-website">${Oe(14)}<span class="em-stat-label">${r(a.stat_website)}</span><span class="em-stat-value">${ke}</span></div>`:"",vt=!!(pe||he||ye||Se||we||$e||xe)?`<section class="em-section em-s-stats"> 77 <div class="em-box"> 78 <h3 class="em-box-title">${r(a.stats_title)}</h3> 79 ${pe}${he}${we}${ye}${Se}${$e}${xe} 80 </div> 81 </section>`:"",ft=i.verified?`<span class="em-verified-inline" data-verified-inline> 82 <span class="em-pill-verified" aria-label="${r(a.verified_label)}"> 83 ${Y(12)}<span class="em-pill-text">${r(a.verified_label)}</span> 84 </span> 85 <button type="button" class="em-verified-info-btn" data-verified-info 86 aria-label="${r(a.verified_info_aria)}" 87 aria-controls="em-verified-tip" aria-expanded="false"> 88 ${Yt(14)} 89 </button> 90 <div class="em-verified-tip" id="em-verified-tip" hidden> 91 ${jt(a.verified_tooltip)} 92 </div> 93 </span>`:"",gt=i.posted_at>0?`<p class="em-profile-date">${hi(14)} ${r(Dt(i.posted_at))}</p>`:"",bt=i.audio?`<ficha-audio 94 data-url="${r(i.audio.url)}" 95 data-duration="${Number(i.audio.duration)||0}" 96 data-strings='${r(JSON.stringify({title:a.audio_title,play_aria:a.audio_play_aria,pause_aria:a.audio_pause_aria,loading:a.audio_loading,error:a.audio_error}))}' 97 ></ficha-audio>`:"",yt=(i.videos?.length??0)>0||ne?`<section class="em-section em-s-videos"> 98 <h3 class="em-box-title">${Q(14)} ${r(a.videos_title)}</h3> 99 <div class="em-videos-grid">${(i.videos??[]).map((c,f)=>Ke(c,f,ae)).join("")+ne}</div> 100 </section>`:"",D=i.features??[],St=D.length>0?`<h4 class="em-box-subtitle">${r(a.features_title)}</h4> 101 <div class="em-services">${D.map(c=>`<span class="em-service-chip" data-feature="${r(c.slug)}">${r(c.name)}</span>`).join("")}</div>`:"",Ee=(i.services?.length??0)>0,wt=Ee?`<div class="em-services">${i.services.map(c=>c.href?`<a href="${r(c.href)}" class="em-service-chip">${r(c.name)}</a>`:`<span class="em-service-chip">${r(c.name)}</span>`).join("")}</div>`:"",Ct=D.length>0,$t=Ee||Ct?`<section class="em-section em-s-services"> 102 <div class="em-box"> 103 <h3 class="em-box-title">${r(a.services_title)}</h3> 104 ${wt} 105 ${St} 106 </div> 107 </section>`:"",kt=t.initiallyFavorited??!1,{is_scrapped:Yi,...xt}=i,Et=JSON.stringify({ficha:{...xt,photos:b},prev_id:o.prev_id??null,next_id:o.next_id??null}).replace(/</g,"\\u003c").replace(/>/g,"\\u003e");return` 108 <article role="dialog" aria-modal="true" aria-label="${r(ct)}" class="em-modal" data-ficha-id="${r(i.id)}" data-landing="${r(t.landingPath??"")}"> 109 <script type="application/json" data-em-ctx>${Et}<\/script> 110 <header class="em-header"> 111 <div class="em-header-left"> 112 ${ht} 113 </div> 114 <div class="em-header-right"> 115 <button type="button" class="em-nav-btn em-nav-btn--icon" data-nav="prev" ${lt} aria-label="${r(a.prev_aria)}"> 116 ${Gt(16)} 117 </button> 118 <button type="button" class="em-nav-btn em-nav-btn--icon" data-nav="next" ${dt} aria-label="${r(a.next_aria)}"> 119 ${Ge(16)} 120 </button> 121 <div class="em-overflow"> 122 <button type="button" class="em-overflow-btn" data-overflow-toggle aria-label="${r(a.more_aria)}" aria-haspopup="menu" aria-expanded="false"> 123 ${Ut(16)} 124 </button> 125 <div class="em-overflow-menu" role="menu"> 126 <button type="button" class="em-overflow-item" data-share role="menuitem"> 127 ${Ue(14)} <span>${r(a.share_aria)}</span> 128 </button> 129 <button type="button" class="em-overflow-item" data-copy-link role="menuitem"> 130 ${Jt(14)} <span>${r(a.copy_link_aria)}</span> 131 </button> 132 <button type="button" class="em-overflow-item em-overflow-item--danger" data-remove-ad role="menuitem"> 133 ${Kt(14)} <span data-ad-removal-cta-label>${r(s.remove_ad)}</span> 134 </button> 135 </div> 136 </div> 137 <button type="button" class="em-close-btn" data-close aria-label="${r(a.close_aria)}"> 138 ${Z(16)} 139 </button> 140 </div> 141 </header> 142 143 <div class="em-body"> 144 <div class="em-body-grid"> 145 <div class="em-col-left"> 146 <section class="em-section em-s-slideshow"> 147 <div class="em-slideshow"><ficha-gallery 148 data-photos='${S}' 149 data-total="${k}" 150 ${i.tier?`data-tier-slug="${r(i.tier.slug)}" data-tier-label="${r(i.tier.label)}" data-tier-color="${r(i.tier.color)}" data-tier-title-color="${r(i.tier.title_color)}"`:""} 151 data-stories='${r(JSON.stringify(i.stories??[]))}' 152 data-ficha-id="${r(i.id)}" 153 data-ficha-name="${r(i.name)}" 154 data-strings='${r(JSON.stringify(t.galleryStrings??{}))}' 155 ></ficha-gallery></div> 156 </section> 157 ${tt} 158 ${yt} 159 ${st} 160 <section class="em-section em-s-notice"> 161 <div class="em-notice">
162 <span class="em-notice-icon">${Xt(16)}</span> 163 <p><b>${r(a.notice_lead)}</b> - ${Be((a.notice_body_html??"").replaceAll("{projectName}",t.projectName??"Erosguia"))}</p> 164 </div> 165 <button type="button" class="em-report-btn" data-report-open> 166 ${zt(12)} ${r(a.notice_report)} 167 </button> 168 </section> 169 </div> 170 171 <div class="em-divider" aria-hidden="true"></div> 172 173 <div class="em-col-right"> 174 <section class="em-section em-s-profile"> 175 <div class="em-box"> 176 <div class="em-profile-head"> 177 <div class="em-profile-name-row"> 178 <h2 class="em-profile-name">${r(i.name)}</h2> 179 ${ft} 180 </div> 181 <button type="button" class="em-fav-btn" data-fav aria-label="${r(a.fav_aria)}" aria-pressed="${kt?"true":"false"}"> 182 ${ai(18)} 183 </button> 184 </div> 185 ${gt} 186 ${bt} 187 ${i.headline?`<p class="em-profile-quote">${r(i.headline)}</p>`:""} 188 ${de?`<p class="em-profile-highlight">${de}</p>`:""} 189 190 ${i.contact.phone?`<a href="tel:${r(i.contact.phone)}" class="em-profile-phone">${Me(16)} ${r(i.contact.phone)}</a>`:""} 191 ${Qe} 192 </div> 193 </section> 194 195 ${u} 196 197 ${vt} 198 199 ${$t} 200 201 ${nt} 202 203 ${at} 204 </div> 205 </div> 206 </div> 207 208 <footer class="em-footer"> 209 ${(()=>{const c=b.length>1,f=(i.videos?.length??0)>0;if(!c&&!f)return"";const w=b.length+(i.private_photo_count??0),H=(i.videos?.length??0)+(i.private_video_count??0),A=r(a.jump_photos_aria.replace("{n}",String(w))),V=r(a.jump_videos_aria.replace("{n}",String(H))),B=c?`<button type="button" class="em-jump-chip" data-jump="photos" aria-label="${A}">${q(14)}<span>${w}</span></button>`:"",W=f?`<button type="button" class="em-jump-chip" data-jump="videos" aria-label="${V}">${Q(14)}<span>${H}</span></button>`:"";return`<div class="em-footer-chips">${B}${W}</div>`})()} 210 ${(()=>{const c=i.contact.whatsapp.replace(/^\+/,""),w=`${(a.whatsapp_prefix??"").replace(/\D/g,"")}${c}`,A=(a.whatsapp_message??"").replaceAll("{projectName}",t.projectName??"Erosguia").replaceAll("{name}",i.name??""),V=A?`?text=${encodeURIComponent(A)}`:"",B=`https://wa.me/${w}${V}`,W=`https://t.me/+${w}`;if(i.shows_interest_button===!0){const z=(a.cta_interest??"").replaceAll("{name}",i.name??"");return` 211 <div class="em-footer-buttons"> 212 <button type="button" data-interest class="em-cta-btn em-cta-interest">${ii(18)} <span class="em-cta-label">${r(z)}</span></button> 213 </div>`}return` 214 <div class="em-footer-buttons"> 215 ${i.contact.whatsapp?`<a href="${B}" target="_blank" rel="noopener" class="em-cta-btn em-cta-whatsapp">${ui(18)} <span class="em-cta-label">${r(a.cta_whatsapp)}</span></a>`:""} 216 ${i.features?.some(z=>z.slug==="telegram")&&i.contact.whatsapp?`<a href="${W}" target="_blank" rel="noopener" class="em-cta-btn em-cta-telegram">${_i(18)} <span class="em-cta-label">${r(a.cta_telegram)}</span></a>`:""} 217 ${i.contact.phone?`<a href="tel:${r(i.contact.phone)}" class="em-cta-btn em-cta-call">${Me(18)} <span class="em-cta-label">${r(a.cta_call)}</span></a>`:""} 218 </div>`})()} 219 </footer> 220 221 <div data-toast hidden role="status" aria-live="polite" class="em-toast"></div> 222 223 <!-- Report sheet â sibling overlay rendered inside the modal so 224 it shares lifecycle (close-modal also drops report state). 225 Body content is swapped on every step transition by 226 renderReportStep(); keeping it lazy means the SSR / first 227 paint doesn't carry markup for steps the user may never 228 see. --> 229 <div class="em-report-overlay" data-report-overlay hidden role="dialog" aria-modal="true" aria-label="${r(a.report_title)}"> 230 <div class="em-report-sheet"> 231 <div class="em-report-handle"></div> 232 <div class="em-report-head"> 233 <button type="button" class="em-report-back" data-report-back aria-label="${r(a.report_back_aria)}" hidden> 234 ${Zt(20)} 235 </button> 236 <div class="em-report-head-title">${r(a.report_title)}</div> 237 <button type="button" class="em-report-close" data-report-close aria-label="${r(a.report_close_aria)}"> 238 ${Z(18)} 239 </button> 240 </div> 241 <div class="em-report-body" data-report-body></div> 242 </div> 243 </div> 244 </article> 245 `}const Xe="scam-notice-muted";function bi(){try{return localStorage.getItem(Xe)==="1"}catch{return!1}}function yi(){try{localStorage.setItem(Xe,"1")}catch{}}const Si={close_aria:"Fechar",share_aria:"Partilhar",share_photo_aria:"Partilhar esta foto",copy_link_aria:"Copiar link",more_aria:"Mais opções",prev_aria:"Anterior",next_aria:"Próximo",verified_label:"Verificada",verified_tooltip:"Anunciante <em>verificada</em> pela nossa equipe. As fotos são <em>verificadas</em> à parte, com seu próprio selo.",verified_info_aria:"Saiba mais sobre verificação",photo_verified_aria:"Foto verificada",photos_section_verified_info:"Esta ficha tem fotos verificadas pela nossa equipe.",fav_aria:"Adicionar aos favoritos",fav_add:"Adicionar aos favoritos",fav_remove:"Remover dos favoritos",cachets_title:"Cachês",stats_title:"Dados pessoais",description_title:"Descrição",photos_title:"Fotos",location_title:"Localização",read_more:"Ler mais",read_less:"Ler menos",stat_age:"Idade",stat_nationality:"Nacionalidade",age_year:"ano",age_years:"anos",stat_city:"
245Cidade",stat_areas:"Ãreas",cta_whatsapp:"WhatsApp",cta_telegram:"Telegram",cta_call:"Ligar",cta_interest:"Avisar a {name}",interest_title:"Avisa-me quando ela voltar a estar disponÃvel",interest_body:"Deixa o teu email e avisamos-te uma vez, quando o anúncio voltar.",interest_email_placeholder:"O teu email",interest_consent_prefix:"Aceito a",interest_policy_link:"polÃtica de privacidade",interest_submit:"Avisa-me",interest_done_title:"Combinado",interest_done_body:"Avisamos-te por email quando o anúncio voltar.",interest_email_invalid:"Escreve um email válido.",interest_consent_required:"Tens de aceitar a polÃtica de privacidade.",interest_error:"Não conseguimos guardar o teu email. Tenta outra vez.",interest_close_aria:"Fechar",whatsapp_message:"Olá {name}, eu te vi em {projectName} e gostaria de ficar com você",whatsapp_prefix:"55",notice_lead:"Aviso importante",notice_body_html:"{projectName} não é uma agência e não tem relação direta com as anunciantes. {projectName} não participa da relação comercial nem do pagamento dos serviços. <b>Tenha cuidado se uma acompanhante pedir pagamento antecipado.</b> Tente sempre pagar em <u>dinheiro e pessoalmente</u>. <b>{projectName}</b> <u>NÃO</u> se responsabiliza por fraudes caso o cliente pague antecipadamente.",notice_report:"Denunciar Anúncio",report_title:"Denunciar anúncio",report_back_aria:"Voltar",report_close_aria:"Fechar",report_step1_prompt:"Por que você está denunciando este anúncio?",report_step2_motivo_label:"Motivo",report_step2_field_label:"Descreva o problema",report_step2_field_hint:"Forneça todos os detalhes que possam nos ajudar com o seu relato. MÃnimo de 10 caracteres.",report_step2_placeholder:"Escreva aqui...",report_step2_char_count:"{n}/10 caracteres",report_step2_continue:"Continuar",report_step3_review_reason:"Motivo",report_step3_review_details:"Detalhes",report_step3_submit:"Enviar denúncia",report_step4_title:"Obrigado pelo seu relato!",report_step4_meta_sent:"Relatório enviado",report_step4_meta_status:"Estado",report_step4_meta_status_value:"Aguardando moderação",report_step4_text:"Levamos cada relato a sério. Se a pessoa relatada violou nossos termos ou regras, as medidas apropriadas serão tomadas.",report_step4_done:"Voltar para {projectName}",report_error:"Não foi possÃvel enviar a denúncia. Tente novamente.",report_throttled:"Muitas tentativas. Tente novamente em instantes.",report_blocked:"Sua conta foi bloqueada por uso indevido. Não é possÃvel enviar denúncias.",scam_eyebrow:"ATENÃÃO:",scam_eyebrow_topic:"GOLPES E CHANTAGEM",scam_lead:"Nunca faça pagamentos antecipados",scam_body:"Desconfie de quem pede dinheiro adiantado â transferência, sinal, taxa ou reserva â antes do encontro, e de quem ameaça você com fotos, vÃdeos ou conversas. <b>Nenhum valor se acerta por WhatsApp, Telegram ou canais similares:</b> combine tudo pessoalmente, na hora.",scam_disclaimer:"{projectName} nunca cobra nada pelo contato com uma acompanhante.",scam_guide_title:"Guia de segurança para clientes",scam_guide_sub:"Os golpes mais comuns e como evitá-los",scam_guide_aria:"Guia de segurança para clientes (abre numa nova aba)",scam_guide_url:"",scam_agree:"CONCORDO",scam_mute:"Não mostrar novamente",scam_close_aria:"Fechar aviso",report_reason_2:"Fotos falsas",report_reason_3:"Menores de 18 anos",report_reason_4:"Telefone errado",report_reason_5:"Drogas, violência ou fraude",report_ident_email_prompt:"Confirme o seu e-mail para enviar a denúncia",report_ident_email_label:"E-mail",report_ident_email_placeholder:"[email protected]",report_ident_name_label:"Nome (opcional)",report_ident_name_placeholder:"O seu nome",report_ident_send_code:"Enviar código",report_ident_code_prompt:"Introduza o código de 6 dÃgitos que enviámos para o seu e-mail",report_ident_code_label:"Código",report_ident_code_placeholder:"000000",report_ident_verify:"Verificar",report_ident_resend:"Reenviar código",report_sending:"A enviar...",report_ident_code_expiry:"O código é válido durante 15 minutos.",report_ident_review_email:"E-mail",report_ident_thanks_number_label:"Número de seguimento",report_ident_thanks_follow:"Guarde este número: poderá acompanhar o estado da sua denúncia.",report_ident_email_invalid:"Introduza um e-mail válido.",report_ident_code_invalid:"Código incorreto. Tente novamente.",report_ident_code_expired:"O código já não é válido. Peça um novo.",report_ident_code_attempts:"Demasiadas tentativas. Peça um novo código.",report_ident_phone_prompt:"Confirme o seu telemóvel para enviar a denúncia",report_ident_phone_label:"Telemóvel",report_ident_phone_placeholder:"912345678",report_ident_phone_send:"Enviar código SMS",report_ident_phone_invalid:"Introduza um telemóvel válido.",report_ident_email_send_failed:"Não foi possÃvel enviar o código. Verifique o email e tente novamente.",report_ident_sms_send_failed:"Não foi possÃvel enviar o SMS. Verifique o número e tente novamente.",report_ident_already_sent:"O código já foi enviado. O botão indica quando pode pedir outro.",report_ident_sms_prompt:"Introduza o código de 6 dÃgitos que enviámos por SMS",report_ident_sms_label:"Código SMS",report_ident_sms_placeholder:"000000",report_ident_sms_invalid:"Código incorreto. Tente novamente.",directions:"Como chegar",street_view:"Street View",open_maps:"Google Maps",related_title:"TOP Acompanhantes em {city}",audio_title:"Mensagem de áudio",audio_play_aria:"Reproduzir áudio",audio_pause_aria:"Pausar áudio",audio_loading:"A carregar áudioâ¦",audio_error:"Não foi possÃvel carregar o áudio.",videos_title:"VÃdeos",jump_photos_aria:"Ir para {n} fotos",jump_videos_aria:"Ir para {n} vÃdeos",services_title:"Serviços",features_title:"Outra informação",stat_languages:"Idiomas",stat_socials:"Redes sociais",stat_website:"Site",locked_count_photos:"{n} fotos privadas",locked_count_videos:"{n} vÃdeos privados",locked_status:"Bloqueadas",locked_header_photos_one:"{n} foto privada bloqueada",locked_header_photos_many:"{n} fotos privadas bloqueadas",locked_header_videos_one:"{n} vÃdeo privado bloqueado",locked_header_videos_many:"{n} vÃdeos privados bloqueados",locked_pill_free:"100% GRÃTIS",locked_title:"Só para quem é <em>verificado</em>",locked_subtitle:"Fotos Ãntimas só para adultos confirmados.",locked_subtitle_videos:"VÃdeos Ãntimos
245só para adultos confirmados.",locked_unlock_photos:"Desbloquear {n} fotos",locked_unlock_videos:"Desbloquear {n} vÃdeos",locked_footer:"30s · Uma vez para todo o site",share_text:"Olha o que eu tenho para você",link_copied:"Link copiado",copy_failed:"Não foi possÃvel copiar o link.",gallery_prev_aria:"Foto anterior",gallery_next_aria:"Próxima foto",gallery_fullscreen_aria:"Ver em ecrã inteiro",gallery_thumb_aria:"Foto {n}",gallery_stories_label:"Stories",gallery_stories_aria:"Ver {n} stories",reliability_title:"Fiabilidade",reliability_score_aria:"Pontuação de fiabilidade",reliability_saber_mais:"Saber mais",reliability_modal_title:"Como funciona a fiabilidade?",reliability_modal_intro:"A pontuação de fiabilidade é calculada automaticamente com base em múltiplos fatores que verificamos continuamente.",reliability_modal_close_aria:"Fechar",reliability_modal_cta:"Entendido",reliability_badge_identity_verified:"Identidade verificada",reliability_badge_selfie_verified:"Selfie verificada",reliability_badge_photos_verified:"Fotos verificadas",reliability_badge_phone_verified:"Telefone verificado",reliability_badge_ad_age:"Perfil estabelecido",reliability_badge_last_verification:"Verificação recente",reliability_badge_activity_level:"Ativa recentemente",reliability_badge_ad_quality:"Anúncio de qualidade",reliability_badge_location_coherence:"Localização coerente",reliability_modal_identity_verified:"Verificação de identidade",reliability_modal_selfie_verified:"Verificação de selfie",reliability_modal_photos_verified:"Verificação de fotos",reliability_modal_phone_verified:"Verificação de telefone",reliability_modal_ad_age:"Antiguidade do perfil",reliability_modal_last_verification:"Ãltima verificação",reliability_modal_activity_level:"Frequência de edição",reliability_modal_ad_quality:"Qualidade do anúncio",reliability_modal_location_coherence:"Coerência de localização"};function qe(o){const e={};if(o)for(const[t,i]of Object.entries(o))typeof i=="string"&&i!==""&&(e[t]=i);return{...Si,...e}}class wi extends HTMLElement{audio=null;pill=null;bars=[];duration=0;rafId=null;connectedCallback(){if(this.duration=Number(this.dataset.duration)||0,!this.dataset.url)return;const e=this.parseStrings();this.innerHTML=` 246 <div class="em-audio"> 247 <button type="button" class="em-audio-play" data-play aria-label="${Ci(e.play_aria)}"> 248 ${Fe} 249 </button> 250 <div class="em-audio-body"> 251 ${Tt("em-wave-bar")} 252 <div class="em-audio-meta"> 253 <span data-display>${X(this.duration)}</span> 254 </div> 255 </div> 256 </div> 257 `,this.pill=this.querySelector(".em-audio"),this.bars=Array.from(this.querySelectorAll(".em-wave-bar")),this.querySelector("[data-play]")?.addEventListener("click",()=>{this.toggle(e)})}disconnectedCallback(){this.audio?.pause(),this.audio=null,this.rafId&&cancelAnimationFrame(this.rafId),this.rafId=null}parseStrings(){const e={title:"Mensagem de áudio",play_aria:"Reproduzir áudio",pause_aria:"Pausar áudio",loading:"A carregar áudioâ¦",error:"Não foi possÃvel carregar o áudio."},t=this.dataset.strings;if(!t)return e;try{const i=JSON.parse(t);return{...e,...i}}catch{return e}}async toggle(e){if(this.audio||(this.audio=new Audio(this.dataset.url),this.audio.preload="auto",this.audio.addEventListener("ended",()=>this.onEnded(e)),this.audio.addEventListener("timeupdate",()=>this.onTimeUpdate()),this.audio.addEventListener("loadedmetadata",()=>{!this.duration&&Number.isFinite(this.audio?.duration)&&(this.duration=this.audio.duration,this.setDisplay(this.duration))})),this.audio.paused){try{await this.audio.play()}catch(t){console.warn("[ficha-audio] play() rejected",t),this.showError(e);return}this.setPlayState(!0,e)}else this.audio.pause(),this.setPlayState(!1,e)}setPlayState(e,t){const i=this.querySelector("[data-play]");i&&(i.innerHTML=e?$i:Fe,i.setAttribute("aria-label",e?t.pause_aria:t.play_aria),this.pill?.classList.toggle("is-playing",e),e?this.startProgressLoop():(this.rafId&&cancelAnimationFrame(this.rafId),this.setDisplay(this.duration)))}startProgressLoop(){const e=()=>{this.onTimeUpdate(),this.rafId=requestAnimationFrame(e)};this.rafId=requestAnimationFrame(e)}onTimeUpdate(){if(!this.audio)return;const e=Math.max(0,this.duration-this.audio.currentTime);this.setDisplay(e),this.updateProgress(this.audio.currentTime/Math.max(this.duration,1))}onEnded(e){this.setPlayState(!1,e),this.audio&&(this.audio.currentTime=0),this.updateProgress(0)}showError(e){const t=this.querySelector(".em-audio-meta");t&&(t.textContent=e.error)}setDisplay(e){const t=this.querySelector("[data-display]");t&&(t.textContent=X(e))}updateProgress(e){const t=Math.max(0,Math.min(1,e)),i=Math.floor(t*Nt);for(let a=0;a<this.bars.length;a++)this.bars[a].classList.toggle("played",a<i)}}function Ci(o){return o.replace(/&/g,"&").replace(/"/g,""").replace(/</g,"<")}const Fe='<svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" stroke="none" aria-hidden="true"><polygon points="6 3 20 12 6 21 6 3"/></svg>',$i='<svg viewBox="0 0 24 24" width="18" height="18" fill="currentColor" stroke="none" aria-hidden="true"><rect x="6" y="4" width="4" height="16" rx="1"/><rect x="14" y="4" width="4" height="16" rx="1"/></svg>';customElements.get("ficha-audio")||customElements.define("ficha-audio",wi);const U={"X-Requested-With":"XMLHttpRequest"},ki="[data-em-defer], .em-section:not(.em-s-slideshow):not(.em-s-profile)",xi=/^#(\d+)$/,Ei=2500;let J=null;function te(){return J===null&&(J=getComputedStyle(document.documentElement).getPropertyValue("--age-ungated").trim()==="1"),J}if(typeof window<"u"){const o=()=>{te()};"requestIdleCallback"in window?requestIdleCallback(o):setTimeout(o,0)}const C=10,x=60,N={notFound:1,expired:2,tooManyAttempts:3,mismatch:4};async function Ii(o){try{const e=await o.json();return typeof e.code=="number"?e.code:null}catch{return null}}async function je(o){try{const e=await o.json();return typeof e.verification_token=="string"?e.verification_token:""}catch{return""}}function De(o){const e=Number(o.headers.get("Retry-After"));return Number.isFinite(e)&&e>0?Math.min(Math.ceil(e),x):x}async function Li(){const o=(document.documentElement.lang||"pt").slice(0,2);try{const[e,t]=await Promise.all([o==="es"?y(()=>import("./es.1DWOBMzG.js"),[]):o==="en"?y(()=>import("./en.C9W-XiP1.js"),[]):y(()=>import("./pt.CGYuTEzy.js"),[]),y(()=>import("./data.ChMev9R2.js"),[])]),i=new Intl.DisplayNames([o],{type:"region"}),a={};for(const s of t.default){const n=i.of(s.iso2.toUpperCase());n&&(a[s.iso2]=n)}return{...e.default,countryNames:a}}catch{return}}function Ai(){const o=document.documentElement.dataset.country||"br";return o==="uk"?"gb":o}const Ti=2e3;function He(o){const e=o.match(xi);return e?e[1]:null}class Ni extends HTMLElement{currentId=null;revealedFor=null;revealedCoverFor=null;prevId=null;nextId=null;renderSeq=0;currentFicha=null;openFichaData=null;lightbox=null;pendingScrollLockCancel=null;pendingTeardownCancel=null;openSeq=0;lightboxPending=null;scamPending=null;pendingFichaId=null;reportOpen=!1;reportStep=1;reportReason=null;reportDetails="";reportSubmitting=!1;reportSubmittedAt=null;reportIdentified=!1;resendCooldownTimer=0;resendReadyAt={email:0,sms:0};phoneField=null;identStep="reason";reportEmail="";reportName="";reportIdentityVerified=!1;reportSmsEnabled=!1;reportPhone="";reportPhoneVerified=!1;reportCodeToken="";reportSmsToken="";reportSmsCompleted=!1;reportIdentityProbe=null;reportNumber=null;verifiedTipAbort=null;connectedCallback(){this.addEventListener("click",this.onBackdrop),document.addEventListener("click",this.onDocClick),document.addEventListener("pointerdown",this.onDocPointerDown),document.addEventListener("keydown",this.onKey),document.addEventListener("age-verified-success",this.onAgeVerified),document.addEventListener("age-verified-cleared",this.onAgeCleared),window.addEventListener("popstate",this.onPopState),window.addEventListener("hashchange",this.onHashChange),Ri(),this.addEventListener("ficha-gallery:open-l
257ightbox",this.onOpenLightbox);const e=document.getElementById("initial-modal-ficha");if(e?.textContent)try{const i=JSON.parse(e.textContent);this.renderFicha(i),this.setAttribute("open",""),this.setScrollLockDeferred(!0),this.currentId=i.ficha.id;return}catch{}const t=He(location.hash);t&&this.open(t)}disconnectedCallback(){document.removeEventListener("click",this.onDocClick),document.removeEventListener("pointerdown",this.onDocPointerDown),document.removeEventListener("keydown",this.onKey),document.removeEventListener("age-verified-success",this.onAgeVerified),document.removeEventListener("age-verified-cleared",this.onAgeCleared),window.removeEventListener("popstate",this.onPopState),window.removeEventListener("hashchange",this.onHashChange),this.removeEventListener("ficha-gallery:open-lightbox",this.onOpenLightbox),this.verifiedTipAbort?.abort(),this.verifiedTipAbort=null,this.clearResendCooldown(),this.destroyPhoneField(),this.pendingScrollLockCancel?.(),this.pendingScrollLockCancel=null,document.body.classList.remove("overflow-hidden"),this.pendingTeardownCancel?.(),this.pendingTeardownCancel=null,this.lightbox?.destroy?.(),this.lightbox=null}setScrollLockDeferred(e){this.pendingScrollLockCancel?.(),this.pendingScrollLockCancel=O(()=>{document.body.classList.toggle("overflow-hidden",e),this.pendingScrollLockCancel=null})}onDocClick=e=>{const i=e.target.closest("[data-ficha-link]");if(!i)return;const a=i.dataset.adId;a&&(e.preventDefault(),this.currentId=a,history.pushState({modal:a},"",`${location.pathname}#${a}`),this.open(a))};warmedIds=new Set;onDocPointerDown=e=>{if(e.button!==0)return;const i=e.target.closest("[data-ficha-link]")?.dataset.adId;!i||this.warmedIds.has(i)||(this.warmedIds.add(i),fetch(`/modal/${encodeURIComponent(i)}.html`,{credentials:"same-origin",headers:U}).catch(()=>{this.warmedIds.delete(i)}))};onBackdrop=e=>{e.target===this&&this.close()};onKey=e=>{e.key!=="Escape"||!this.hasAttribute("open")||(this.scamPending?this.closeScamNotice(!1):this.reportOpen?this.closeReportSheet():this.close())};onPopState=()=>this.syncWithHash();onHashChange=()=>this.syncWithHash();onAgeVerified=()=>{!this.hasAttribute("open")||!this.openFichaData||(this.maybeRevealPrivateMedia(this.openFichaData),this.maybeRevealExplicitCover(this.openFichaData))};onAgeCleared=()=>{this.revealedCoverFor=null,this.querySelector("ficha-gallery")?.revertCover?.()};syncWithHash(){const e=He(location.hash);e?e!==this.currentId&&this.open(e):this.hasAttribute("open")&&this.close(!1)}async open(e){const t=++this.openSeq;this.pendingTeardownCancel?.(),this.pendingTeardownCancel=null,this.lightbox?.destroy?.(),this.lightbox=null,this.setAttribute("open",""),this.setScrollLockDeferred(!0),this.replaceChildren();const i=document.createElement("div");i.className="modal-loading p-8 text-center text-white",i.textContent="Carregandoâ¦",this.appendChild(i);const a=new Promise(s=>{O(s)});try{const s=document.documentElement.dataset.landingUrl?.replace(/^\//,"");let n;try{const d=`/modal/${encodeURIComponent(e)}.html`,l=await fetch(d,{credentials:"same-origin",headers:U});if(!l.ok)throw new Error(`Modal HTML fetch returned ${l.status}`);const h=await l.text();if(await a,t!==this.openSeq)return;n=this.bootstrapFromHtml(h),this.currentId=e;const m=this.favoritesSiblingsFor(e);m?(this.prevId=m.prevId,this.nextId=m.nextId,this.syncNavDisabledFromSiblings()):(this.prevId=null,this.nextId=null,this.syncNavDisabledFromSiblings(),this.loadAdjacent(e,s))}catch(d){if(console.warn("[escort-modal] SSR path failed, falling back to JSON",d),n=await It().getFicha(e,s),await a,t!==this.openSeq)return;this.currentId=e;const l=this.favoritesSiblingsFor(e);this.prevId=l?l.prevId:n.prev_id,this.nextId=l?l.nextId:n.next_id,this.renderFicha(n)}this.openFichaData=n,this.maybeRevealPrivateMedia(n),this.maybeRevealExplicitCover(n)}catch{if(t!==this.openSeq)return;this.replaceChildren();const s=document.createElement("div");s.className="modal-error p-8 text-center text-white",s.textContent="Erro ao carregar. ";const n=document.createElement("button");n.type="button",n.className="underline",n.textContent="Voltar",n.addEventListener("click",()=>this.close()),s.appendChild(n),this.appendChild(s)}}close(e=!0){this.openSeq++,this.removeAttribute("open"),this.setScrollLockDeferred(!1),this.revealedFor=null,this.revealedCoverFor=null,this.openFichaData=null,this.reportOpen=!1,this.reportSubmitting=!1,this.scamPending=null,this.pendingFichaId=null,this.pendingTeardownCancel?.(),this.pendingTeardownCancel=O(()=>{this.pendingTeardownCancel=null,this.lightbox?.destroy?.(),this.lightbox=null,this.replaceChildren()}),this.currentId=null,this.prevId=null,this.nextId=null,this.currentFicha=null,e&&location.hash&&history.replaceState(null,"",location.pathname)}navigate(e){const t=e==="prev"?this.prevId:this.nextId;t&&(history.replaceState({modal:t},"",`${location.pathname}#${t}`),this.open(t))}favoritesSiblingsFor(e){const t=document.querySelector("[data-favorites-tab-grid]:not([hidden])");if(!t)return null;const i=[];for(const s of Array.from(t.children)){const n=s.getAttribute("data-ad-id");n&&i.push(n)}const a=i.indexOf(e);return a===-1?{prevId:null,nextId:null}:{prevId:a>0?i[a-1]:null,nextId:a<i.length-1?i[a+1]:null}}
257wireRelatedSlider(){this.querySelectorAll("[data-related-open]").forEach(n=>{n.addEventListener("click",()=>{const d=n.dataset.relatedOpen;d&&(history.replaceState({modal:d},"",`${location.pathname}#${d}`),this.open(d))})});const e=this.querySelector("[data-related-track]"),t=this.querySelector("[data-related-dots]"),i=this.querySelector("[data-related-track-wrap]");if(!e||!t)return;const a=n=>{const d=e.scrollWidth-e.clientWidth;if(d<=0||n<=1)return 0;const l=Math.min(1,Math.max(0,e.scrollLeft/d));return Math.round(l*(n-1))};(()=>{const n=Math.max(1,Math.ceil(e.scrollWidth/e.clientWidth));if(i&&(n<=1?i.setAttribute("data-no-overflow",""):i.removeAttribute("data-no-overflow")),n<=1){t.hidden=!0,t.replaceChildren();return}const d=a(n),l=Array.from({length:n},(h,m)=>`<button type="button" class="em-related-dot" data-related-dot="${m}"${m===d?" data-active":""} aria-label="Página ${m+1}"></button>`).join("");t.hidden=!1,t.innerHTML=l,t.querySelectorAll("[data-related-dot]").forEach(h=>{h.addEventListener("click",()=>{const m=Number(h.dataset.relatedDot);if(!Number.isInteger(m))return;const v=e.scrollWidth-e.clientWidth,g=n>1?m/(n-1)*v:0;e.scrollTo({left:g,behavior:"smooth"})})})})(),e.addEventListener("scroll",()=>{const n=Math.max(1,Math.ceil(e.scrollWidth/e.clientWidth));if(n<=1)return;const d=a(n);t.querySelectorAll("[data-related-dot]").forEach((l,h)=>{h===d?l.setAttribute("data-active",""):l.removeAttribute("data-active")})},{passive:!0})}renderFicha(e){Mi();const t=this.pickStrings(),i=gi(e,t,{landingPath:this.dataset.landing??null,prevId:this.prevId,nextId:this.nextId,ageGateActive:this.dataset.ageVerificationActive==="1"&&document.documentElement.dataset.ageVerified!=="1",galleryStrings:this.galleryStrings(),adConversionStrings:Oi(),projectName:document.documentElement.dataset.projectName??"Erosguia",initiallyFavorited:Ie(e.ficha.id)}),a=this.injectBody(i);this.wireEvents(e,a)}injectBody(e){const t=document.createElement("template");t.innerHTML=e;const i=[],a=Wt()?ki:"[data-em-defer]";return t.content.querySelectorAll(a).forEach(s=>{const n=document.createComment("em-defer");s.replaceWith(n),i.push({marker:n,node:s})}),this.replaceChildren(),this.appendChild(t.content),i}attachDeferredSections(e){for(const{marker:t,node:i}of e)t.isConnected&&t.replaceWith(i)}syncNavDisabledFromSiblings(){const e=this.querySelector('[data-nav="prev"]'),t=this.querySelector('[data-nav="next"]');e&&(this.prevId?e.removeAttribute("aria-disabled"):e.setAttribute("aria-disabled","true")),t&&(this.nextId?t.removeAttribute("aria-disabled"):t.setAttribute("aria-disabled","true"))}async loadAdjacent(e,t){if(!t)return;let i;try{const a=await fetch(`/modal/${encodeURIComponent(e)}/adjacent.json?landing=${encodeURIComponent(t)}`,{credentials:"same-origin",headers:U});if(!a.ok)return;i=await a.json()}catch{return}this.currentId!==e||this.favoritesSiblingsFor(e)||(this.prevId=i.prev_id??null,this.nextId=i.next_id??null,this.syncNavDisabledFromSiblings())}bootstrapFromHtml(e){const t=this.injectBody(e),i=this.querySelector("script[data-em-ctx]");if(!i||!i.textContent)throw new Error("Modal HTML is missing the data-em-ctx sidecar");const a=JSON.parse(i.textContent);this.wireEvents(a,t);const s=this.querySelector("[data-fav]");return s&&s.setAttribute("aria-pressed",Ie(a.ficha.id)?"true":"false"),a}wireEvents(e,t=[]){const i=e.ficha;this.currentFicha=i;const a=++this.renderSeq,s=n=>this.querySelector(n);this.wireCriticalEvents(i,s),this.verifiedTipAbort&&(this.verifiedTipAbort.abort(),this.verifiedTipAbort=null),setTimeout(()=>{!this.isConnected||this.renderSeq!==a||(this.attachDeferredSections(t),this.wireDeferredEvents(e,s))},0)}wireCriticalEvents(e,t){Ft(),t("[data-close]")?.addEventListener("click",()=>this.close()),t('[data-nav="prev"]')?.addEventListener("click",()=>this.navigate("prev")),t('[data-nav="next"]')?.addEventListener("click",()=>this.navigate("next")),t("[data-share]")?.addEventListener("click",()=>this.shareCurrent(`${e.name}, ${e.age}`)),t("[data-copy-link]")?.addEventListener("click",()=>this.copyLink()),t("[data-fav]")?.addEventListener("click",i=>this.toggleFav(i.currentTarget,e.id)),this.gateContact(t(".em-cta-call"),"phone",e.id),this.gateContact(t(".em-profile-phone"),"phone",e.id),this.gateContact(t(".em-cta-whatsapp"),"whatsapp",e.id),this.gateContact(t(".em-cta-telegram"),"telegram",e.id),t("[data-overflow-toggle]")?.addEventListener("click",i=>this.toggleOverflow(i.currentTarget)),this.addEventListener("click",this.onModalClick)}wireDeferredEvents(e,t){const i=e.ficha,a=t("[data-verified-info]");if(a){const l=t(".em-verified-tip"),h=t("[data-verified-inline]"),m=new AbortController;this.verifiedTipAbort=m;const v=()=>{if(!l)return;const _=a.getBoundingClientRect(),b=Math.min(280,window.innerWidth-24);let S=_.right-b;S<12&&(S=12),S+b>window.innerWidth-12&&(S=window.innerWidth-12-b);const k=l.offsetHeight||80,E=_.bottom+8+k>window.innerHeight-8?Math.max(8,_.top-8-k):_.bottom+8;l.style.left=`${S}px`,l.style.top=`${E}px`,l.style.width=`${b}px`},g=_=>{if(!l)return;_??l.hasAttribute("hidden")?(v(),l.removeAttribute("hidden"),a.setAttribute("aria-expanded","true")):(l.setAttribute("hidden",""),a.setAttribute("aria-expanded","fal
257se"))};a.addEventListener("click",_=>{_.stopPropagation(),g()},{signal:m.signal}),document.addEventListener("click",_=>{!l||l.hasAttribute("hidden")||h&&h.contains(_.target)||g(!1)},{signal:m.signal});const u=()=>{l&&!l.hasAttribute("hidden")&&v()};window.addEventListener("scroll",u,{passive:!0,signal:m.signal}),window.addEventListener("resize",u,{signal:m.signal}),this.querySelector(".em-body")?.addEventListener("scroll",u,{passive:!0,signal:m.signal})}this.querySelectorAll("[data-jump]").forEach(l=>{l.addEventListener("click",()=>{const h=l.dataset.jump==="photos"?".em-s-photos":".em-s-videos";this.querySelector(h)?.scrollIntoView({behavior:"smooth",block:"start"})})}),t("[data-interest]")?.addEventListener("click",()=>{const l=this.pickStrings();T("interest","ficha",i.id),window.dispatchEvent(new CustomEvent("open-interest",{detail:{fichaId:i.id,strings:{title:l.interest_title,body:l.interest_body,emailPlaceholder:l.interest_email_placeholder,consentPrefix:l.interest_consent_prefix,policyLink:l.interest_policy_link,submit:l.interest_submit,doneTitle:l.interest_done_title,doneBody:l.interest_done_body,emailInvalid:l.interest_email_invalid,consentRequired:l.interest_consent_required,error:l.interest_error,closeAria:l.interest_close_aria},recaptchaSiteKey:P,privacyPolicyUrl:Ye}}))}),t("[data-remove-ad]")?.addEventListener("click",()=>{window.dispatchEvent(new CustomEvent("open-ad-removal",{detail:{fichaId:i.id,isScrapped:i.removal_via_email_otp??i.is_scrapped??!1,validPhoneFormat:i.valid_phone_format,ficheName:i.name}}))}),this.wireRelatedSlider(),t("[data-report-open]")?.addEventListener("click",()=>this.openReportSheet()),t("[data-report-close]")?.addEventListener("click",()=>this.closeReportSheet()),t("[data-report-back]")?.addEventListener("click",()=>this.reportBack()),t("[data-report-overlay]")?.addEventListener("click",l=>{l.target===l.currentTarget&&this.closeReportSheet()}),this.wirePhotoTiles(this.querySelectorAll("[data-photo-idx]"),i),this.wireSharePhotoButtons(this.querySelectorAll("[data-share-photo]"),i),this.wireVideoTiles(this.querySelectorAll("[data-video-url]")),this.querySelectorAll("[data-locked-cta]").forEach(l=>{l.addEventListener("click",()=>{document.dispatchEvent(new CustomEvent("open-age-gate",{bubbles:!0,composed:!0,detail:{source:l.dataset.lockedCta}}))})});const s=this.querySelector(".em-desc"),n=this.querySelector(".em-desc-text"),d=this.querySelector("[data-desc-toggle]");if(s&&n&&d){const l=()=>{this.isConnected&&(n.scrollHeight-n.clientHeight>1?d.hidden=!1:s.removeAttribute("data-clamped"))};typeof requestIdleCallback=="function"?requestIdleCallback(l,{timeout:200}):setTimeout(l,0),d.addEventListener("click",()=>{s.hasAttribute("data-clamped")?s.removeAttribute("data-clamped"):s.setAttribute("data-clamped","")})}this.maybeInjectSurveyCta(i)}async maybeInjectSurveyCta(e){const t=await Ot();if(!t||!Pt(t.config)||this.currentFicha?.id!==e.id)return;const i=this.querySelector(".em-col-left");if(!i||i.querySelector("[data-feedback-trigger]"))return;const a=i.querySelector(".em-s-notice"),s=t.strings,n=`<section class="em-section em-s-feedback"><div class="em-feedback-cta"><span class="em-feedback-cta-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.2" stroke-linecap="round" stroke-linejoin="round"><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></span><p class="em-feedback-cta-title">${r(s.cta_title)}</p><p class="em-feedback-cta-sub">${r(s.cta_sub)}</p><button type="button" class="em-feedback-cta-btn" data-feedback-trigger data-feedback-city="${r(e.location?.city??"")}" data-feedback-ad="${r(String(e.id??""))}"><span>${r(s.cta_button)}</span><svg width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 5l7 7-7 7"/></svg></button><p class="em-feedback-cta-meta">${r(s.cta_meta)}</p></div></section>`;a?a.insertAdjacentHTML("beforebegin",n):i.insertAdjacentHTML("beforeend",n),qt()}wirePhotoTiles(e,t){for(const i of e)i.dataset.wired!=="1"&&(i.dataset.wired="1",i.addEventListener("click",()=>{const a=Number(i.dataset.photoIdx);Number.isInteger(a)&&this.dispatchEvent(new CustomEvent("ficha-gallery:open-l
257ightbox",{bubbles:!0,detail:{photos:t.photos,index:a}}))}))}wireSharePhotoButtons(e,t){for(const i of e)i.dataset.wired!=="1"&&(i.dataset.wired="1",i.addEventListener("click",a=>{a.stopPropagation(),this.shareCurrent(`${t.name}, ${t.age}`)}))}wireVideoTiles(e){for(const t of e)t.dataset.wired!=="1"&&(t.dataset.wired="1",t.addEventListener("click",()=>{const i=t.dataset.videoUrl;if(!i||t.dataset.playing==="1")return;const a=Array.from(t.childNodes);t.dataset.playing="1",t.classList.add("is-playing");const s=document.createElement("video");s.src=i,s.controls=!0,s.autoplay=!0,s.playsInline=!0,s.className="em-video-tile-player",s.addEventListener("error",()=>{t.replaceChildren(...a),t.classList.remove("is-playing"),delete t.dataset.playing}),s.addEventListener("click",n=>n.stopPropagation()),t.replaceChildren(s)}))}async maybeRevealPrivateMedia(e){const t=e.ficha;if(!(document.documentElement.dataset.ageVerified==="1")&&!te()||(t.private_photo_count??0)<=0&&(t.private_video_count??0)<=0)return;const a=this.currentId;if(!a||this.revealedFor===a)return;this.revealedFor=a;let s;try{const n=await fetch(`/api/ficha/${encodeURIComponent(a)}/private-photos`,{credentials:"same-origin"});if(!n.ok)return;s=await n.json()}catch{return}this.currentId!==a||!this.isConnected||this.injectPrivateMedia(t,s)}async maybeRevealExplicitCover(e){const t=e.ficha;if(t.cover_state!=="explicit"||!(document.documentElement.dataset.ageVerified==="1")&&!te())return;const a=this.currentId;if(!a||this.revealedCoverFor===a)return;this.revealedCoverFor=a;let s;try{const l=await fetch("/api/fichas/explicit-covers",{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json"},body:JSON.stringify({items:[{id:a,tier:t.tier?.slug??""}]})});if(!l.ok){this.revealedCoverFor=null;return}s=await l.json()}catch{this.revealedCoverFor=null;return}if(this.currentId!==a||!this.isConnected)return;const n=s[a];if(!n)return;this.querySelector("ficha-gallery")?.revealCover?.(n),t.photos.length>0&&(t.photos[0]={...t.photos[0],url:n.photo||n.photo_mobile||t.photos[0].url})}injectPrivateMedia(e,t){const i=qe(ie),a=Array.isArray(t.photos)?t.photos:[];if(a.length>0){const n=this.querySelector(".em-photos-grid"),d=n?.querySelector(".em-locked-tile")??null,l=e.photos.length;if(e.photos.push(...a),n){const m=a.map((v,g)=>Je(v,l+g,e.photos.length,i)).join("");d?d.insertAdjacentHTML("beforebegin",m):n.insertAdjacentHTML("beforeend",m),this.wirePhotoTiles(n.querySelectorAll(".em-photo-tile-wrap [data-photo-idx]"),e),this.wireSharePhotoButtons(n.querySelectorAll("[data-share-photo]"),e)}this.querySelector("ficha-gallery")?.appendPhotos?.(a)}const s=Array.isArray(t.videos)?t.videos:[];if(s.length>0){const n=this.querySelector(".em-videos-grid");if(n){const d=n.querySelector(".em-locked-tile"),l=e.videos?.length??0,h=l+s.length,m=s.map((v,g)=>Ke(v,l+g,h)).join("");d?d.insertAdjacentHTML("beforebegin",m):n.insertAdjacentHTML("beforeend",m),this.wireVideoTiles(n.querySelectorAll("[data-video-url]"))}}}galleryStrings(){const e=this.pickStrings();return{prev_aria:e.gallery_prev_aria,next_aria:e.gallery_next_aria,fullscreen_aria:e.gallery_fullscreen_aria,thumb_aria_template:e.gallery_thumb_aria,verified_label:e.verified_label,photo_verified_aria:e.photo_verified_aria,stories_label:e.gallery_stories_label,stories_aria_template:e.gallery_stories_aria}}onOpenLightbox=e=>{this.openLightbox(e.detail.photos,e.detail.index)};async openLightbox(e,t){if(this.lightbox){this.lightbox.loadAndOpen?.(t);return}if(this.lightboxPending){await this.lightboxPending,this.lightbox?.loadAndOpen?.(t);return}this.lightboxPending=(async()=>{const i=this.openSeq,[{default:a}]=await Promise.all([y(()=>import("./photoswipe-lightbox.esm.ChnMenJc.js"),[]),y(()=>Promise.resolve({}),__vite__mapDeps([0]))]);if(i!==this.openSeq)return;const s=new a({dataSource:e.map(n=>({src:n.url,width:n.width||void 0,height:n.height||void 0,alt:""})),pswpModule:()=>y(()=>import("./photoswipe.esm.BXDdABy_.js"),[]),bgOpacity:.95,showHideAnimationType:"fade"});s.on("destroy",()=>{this.lightbox=null}),s.init(),s.loadAndOpen(t),this.lightbox=s})();try{await this.lightboxPending}finally{this.lightboxPending=null}}onModalClick=e=>{const t=e.target,i=this.querySelector(".em-overflow");i&&(i.contains(t)||(i.removeAttribute("data-open"),i.querySelector("[data-overflow-toggle]")?.setAttribute("aria-expanded","fal
257se")))};toggleOverflow(e){const t=e.closest(".em-overflow");if(!t)return;t.hasAttribute("data-open")?(t.removeAttribute("data-open"),e.setAttribute("aria-expanded","false")):(t.setAttribute("data-open",""),e.setAttribute("aria-expanded","true"))}openReportSheet(){this.reportOpen=!0,this.reportStep=1,this.reportReason=null,this.reportDetails="",this.reportSubmitting=!1,this.reportSubmittedAt=null,this.reportIdentified=this.dataset.reportMode==="required",this.reportSmsEnabled=this.dataset.reportSms==="1",this.identStep="reason",this.reportEmail="",this.reportName="",this.reportIdentityVerified=!1,this.reportPhone="",this.reportPhoneVerified=!1,this.reportSmsCompleted=!1,this.reportCodeToken="",this.reportSmsToken="",this.reportNumber=null;const e=this.querySelector("[data-report-overlay]");e&&(e.hidden=!1,requestAnimationFrame(()=>e.classList.add("is-open")),this.renderReportStep(),this.reportIdentityProbe=this.reportIdentified?this.checkReportIdentity():null)}gateContact(e,t,i){e&&e.addEventListener("click",a=>{const s=a,n=s.currentTarget,d=n.getAttribute("href");if(bi()||s.metaKey||s.ctrlKey||s.shiftKey||s.altKey||s.button!==0||!d){T(t,"ficha",i);return}s.preventDefault(),this.scamPending={href:d,newTab:n.getAttribute("target")==="_blank",type:t},this.pendingFichaId=i,this.openScamNotice()})}wireScamNotice(){const e=this.querySelector("[data-scam-overlay]");e&&(this.querySelector("[data-scam-agree]")?.addEventListener("click",()=>this.closeScamNotice(!0)),this.querySelector("[data-scam-close]")?.addEventListener("click",()=>this.closeScamNotice(!1)),e.addEventListener("click",t=>{t.target===t.currentTarget&&this.closeScamNotice(!1)}))}openScamNotice(){const e=this.querySelector("article.em-modal");if(!e)return;let t=this.querySelector("[data-scam-overlay]");if(!t){if(e.insertAdjacentHTML("beforeend",this.renderScamNotice(this.pickStrings())),t=this.querySelector("[data-scam-overlay]"),!t)return;this.wireScamNotice()}const i=this.querySelector("[data-scam-mute]");i&&(i.checked=!1),t.hidden=!1,t.offsetHeight,t.classList.add("is-open")}renderScamNotice(e){const t=document.documentElement.dataset.projectName??"Erosguia",i=e.scam_guide_url?`<a class="em-scam-guide" href="${r(e.scam_guide_url)}" target="_blank" rel="noopener" aria-label="${r(e.scam_guide_aria)}"> 258 <span class="em-scam-guide-icon">${Te(17)}</span> 259 <span class="em-scam-guide-copy"> 260 <span class="em-scam-guide-title">${r(e.scam_guide_title)}</span> 261 <span class="em-scam-guide-sub">${r(e.scam_guide_sub)}</span> 262 </span> 263 <span class="em-scam-guide-chev">${Ae(16)}</span> 264 </a>`:"";return` 265 <div class="em-scam-overlay" data-scam-overlay hidden role="dialog" aria-modal="true" aria-labelledby="em-scam-title"> 266 <div class="em-scam-sheet"> 267 <div class="em-scam-head"> 268 <span class="em-scam-head-icon">${Ne(16)}</span> 269 <div class="em-scam-head-title" id="em-scam-title"> 270 <span>${r(e.scam_eyebrow)}</span> ${r(e.scam_eyebrow_topic)} 271 </div> 272 <button type="button" class="em-scam-close" data-scam-close aria-label="${r(e.scam_close_aria)}"> 273 ${Z(14)} 274 </button> 275 </div> 276 <div class="em-scam-body"> 277 <div class="em-scam-mark">${ti(34)}</div> 278 <p class="em-scam-lead">${r(e.scam_lead)}</p> 279 <p class="em-scam-text">${Be(e.scam_body)}</p> 280 <p class="em-scam-text">${r(e.scam_disclaimer.replaceAll("{projectName}",t))}</p> 281 </div> 282 <div class="em-scam-actions"> 283 ${i} 284 <button type="button" class="em-scam-agree" data-scam-agree>${r(e.scam_agree)}</button> 285 <label class="em-scam-mute"> 286 <input type="checkbox" data-scam-mute> 287 ${r(e.scam_mute)} 288 </label> 289 </div> 290 </div> 291 </div>`}closeScamNotice(e){const t=this.scamPending,i=this.pendingFichaId;this.scamPending=null,this.pendingFichaId=null,this.querySelector("[data-scam-mute]")?.checked&&yi();const a=this.querySelector("[data-scam-overlay]");a&&(a.classList.remove("is-open"),window.setTimeout(()=>{this.scamPending||(a.hidden=!0)},320)),!(!e||!t)&&(i!=null&&T(t.type,"ficha",i),t.newTab?window.open(t.href,"_blank","noopener"):window.location.href=t.href)}closeReportSheet(){this.reportOpen=!1,this.clearResendCooldown(),this.destroyPhoneField();const e=this.querySelector("[data-report-overlay]");e&&(e.classList.remove("is-open"),window.setTimeout(()=>{this.reportOpen||(e.hidden=!0)},350))}reportBack(){if(this.reportIdentified){this.identBack();return}if(this.reportStep===2)this.reportStep=1;else if(this.reportStep===3)this.reportStep=2;else return;this.renderReportStep()}renderReportStep(){if(this.reportIdentified){this.renderIdentStep();return}const e=this.querySelector("[data-report-body]"),t=this.querySelector("[data-report-back]");if(!e||!t)return;t.hidden=this.reportStep===1||this.reportStep===4;const i=this.pickStrings();this.reportStep===1?e.innerHTML=this.renderReportStep1(i):this.reportStep===2?e.innerHTML=this.renderReportStep2(i):this.reportStep===3?e.innerHTML=this.renderReportStep3(i):e.innerHTML=this.renderReportStep4(i),this.wireReportStep()}renderReportStep1(e){const t=[{id:2,label:e.report_reason_2,icon:Qt},{id:3,label:e.report_reason_3,icon:Te},{id:4,label:e.report_reason_4,icon:ei},{id:5,label:e.report_reason_5,icon:Ne}];return` 292 <div class="em-report-step" data-step="1"> 293 <div class="em-report-prompt">${r(e.report_step1_prompt)}</div> 294 <div class="em-report-options"> 295 ${t.map(i=>` 296 <button type="button" class="em-report-option" data-report-reason="${i.id}" data-report-reason-label="${r(i.label)}"> 297 ${i.icon(20)}
298 <span class="em-report-option-text">${r(i.label)}</span> 299 <span class="em-report-option-chev">${Ae(18)}</span> 300 </button> 301 `).join("")} 302 </div> 303 </div> 304 `}renderReportStep2(e){const t=this.reportReason,i=this.reportDetails,a=i.length,s=e.report_step2_char_count.replace("{n}",String(a)),n=a>=C;return` 305 <div class="em-report-step" data-step="2"> 306 <div class="em-report-chosen"> 307 <span class="em-report-chosen-label">${r(e.report_step2_motivo_label)}</span> 308 <span class="em-report-chosen-value">${r(t?.label??"â")}</span> 309 </div> 310 <div class="em-report-field-label">${r(e.report_step2_field_label)}</div> 311 <div class="em-report-field-hint">${r(e.report_step2_field_hint)}</div> 312 <textarea class="em-report-textarea" data-report-textarea placeholder="${r(e.report_step2_placeholder)}" rows="6" maxlength="${Ti}">${r(i)}</textarea> 313 <div class="em-report-char-count${n?" is-valid":""}" data-report-char-count>${r(s)}</div> 314 <button type="button" class="em-report-primary-btn" data-report-continue ${n?"":"disabled"}> 315 ${r(e.report_step2_continue)} 316 </button> 317 </div> 318 `}renderReportStep3(e){const t=this.reportReason?.label??"â",i=this.reportDetails;return` 319 <div class="em-report-step" data-step="3"> 320 <div class="em-report-summary"> 321 <div class="em-report-summary-row"> 322 <div class="em-report-summary-label">${r(e.report_step3_review_reason)}</div> 323 <div class="em-report-summary-value">${r(t)}</div> 324 </div> 325 <div class="em-report-summary-row"> 326 <div class="em-report-summary-label">${r(e.report_step3_review_details)}</div> 327 <div class="em-report-summary-value em-report-summary-details">${r(i)}</div> 328 </div> 329 </div> 330 <div class="em-report-error" data-report-error hidden></div> 331 <button type="button" class="em-report-primary-btn" data-report-submit ${this.reportSubmitting?"disabled":""}> 332 ${r(e.report_step3_submit)} 333 </button> 334 </div> 335 `}renderReportStep4(e){const t=this.reportSubmittedAt??Math.floor(Date.now()/1e3),i=new Date(t*1e3).toLocaleString();return` 336 <div class="em-report-step" data-step="4"> 337 <div class="em-report-success"> 338 <div class="em-report-success-icon"> 339 ${Re(40)} 340 </div> 341 <div class="em-report-success-title">${r(e.report_step4_title)}</div> 342 <div class="em-report-success-meta"> 343 <div><b>${r(e.report_step4_meta_sent)}:</b> ${r(i)}</div> 344 <div><b>${r(e.report_step4_meta_status)}:</b> ${r(e.report_step4_meta_status_value)}</div> 345 </div> 346 <p class="em-report-success-text">${r(e.report_step4_text)}</p> 347 <button type="button" class="em-report-primary-btn" data-report-done> 348 ${r(e.report_step4_done.replace("{projectName}",document.documentElement.dataset.projectName??"Erosguia"))} 349 </button> 350 </div> 351 </div> 352 `}wireReportStep(){const e=t=>this.querySelector(t);if(this.reportStep===1&&this.querySelectorAll("[data-report-reason]").forEach(t=>{t.addEventListener("click",()=>{const i=Number(t.dataset.reportReason),a=t.dataset.reportReasonLabel??"";Number.isFinite(i)&&(this.reportReason={id:i,label:a},this.reportStep=2,this.renderReportStep())})}),this.reportStep===2){const t=e("[data-report-textarea]"),i=e("[data-report-char-count]"),a=e("[data-report-continue]"),s=this.pickStrings();t&&(t.focus(),t.addEventListener("input",()=>{this.reportDetails=t.value;const n=t.value.length,d=n>=C;i&&(i.textContent=s.report_step2_char_count.replace("{n}",String(n)),i.classList.toggle("is-valid",d)),a&&(a.disabled=!d)})),a?.addEventListener("click",()=>{this.reportDetails.length<C||(this.reportStep=3,this.renderReportStep())})}this.reportStep===3&&e("[data-report-submit]")?.addEventListener("click",()=>{this.submitReport()}),this.reportStep===4&&e("[data-report-done]")?.addEventListener("click",()=>this.closeReportSheet())}async submitReport(){if(this.reportSubmitting||!this.reportReason||this.currentId===null||this.reportDetails.length<C)return;const e=this.pickStrings();this.reportSubmitting=!0;const t=this.querySelector("[data-report-submit]");t&&(t.disabled=!0);try{const i=await fetch(`/api/ficha/${encodeURIComponent(this.currentId)}/report`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({motivo_id:this.reportReason.id,texto:this.reportDetails})});if(i.ok){const a=await i.json().catch(()=>({}));this.reportSubmittedAt=typeof a.reported_at=="number"?a.reported_at:Math.floor(Date.now()/1e3),this.reportStep=4,this.renderReportStep();return}this.reportSubmitting=!1,t&&(t.disabled=!1),this.showReportFeedback(i.status===429?e.report_throttled:e.report_error)}catch{this.reportSubmitting=!1,t&&(t.disabled=!1),this.showReportFeedback(e.report_error)}}renderIdentStep(){const e=this.querySelector("[data-report-body]"),t=this.querySelector("[data-report-back]");if(!e||!t)return;this.destroyPhoneField(),t.hidden=this.identStep==="reason"||this.identStep==="thanks";const i=this.pickStrings();this.identStep==="reason"?e.innerHTML=this.renderReportStep1(i):this.identStep==="text"?e.innerHTML=this.renderReportStep2(i):this.identStep==="email"?e.innerHTML=this.renderIdentEmail(i):this.identStep==="code"?e.innerHTML=this.renderIdentCode(i):this.identStep==="phone"?e.innerHTML=this.renderIdentPhone(i):this.identStep==="sms_code"?e.innerHTML=this.renderIdentSmsCode(i):this.identStep==="review"?e.innerHTML=this.renderIdentReview(i):e.innerHTML=this.renderIdentThanks(i),this.wireIdentStep()}identBack(){if(this.clearResendCooldown(),this.identStep==="text")this.identStep="reason";else if(this.identStep==="email")this.identStep="text";else if(this.identStep==="code")this.identStep="email";else if(this.identStep==="phone")this.identStep=this.reportIdentityVerified?"text":"code";else if(this.identStep==="sms_code")this.identStep="phone";else if(this.identStep==="review")this.identStep=this.reportSmsCompleted?"sms_code":this.reportIdentityVerified?"text":"code";else return;this.renderIdentStep()}renderIdentEmail(e){return` 353 <div class="em-report-step" data-step="email"> 354 <div class="em-report-prompt">${r(e.report_ident_email_prompt)}</div> 355 <label class="em-report-field-label" for="em-report-email">${r(e.report_ident_email_label)}</label> 356 <input id="em-report-email" type="email" class="em-report-input" data-report-email inputmode="email" autocomplete="email" placeholder="${r(e.report_ident_email_placeholder)}" value="${r(this.reportEmail)}" /> 357 <label class="em-report-field-label" for="em-report-name">${r(e.report_ident_name_label)}</label> 358 <input id="em-report-name" type="text" class="em-report-input" data-report-name autocomplete="name" placeholder="${r(e.report_ident_name_placeholder)}" value="${r(this.reportName)}" /> 359 <div class="em-report-error" data-report-error hidden></div> 360 <button type="button" class="em-report-primary-btn" data-report-send-code>${r(e.report_ident_send_code)}</button> 361 </div> 362 `}renderIdentCode(e){return` 363 <div class="em-report-step" data-step="code"> 364 <div class="em-report-prompt">${r(e.report_ident_code_prompt)}</div> 365 <label class="em-report-field-label" for="em-report-code">${r(e.report_ident_code_label)}</label> 366 <input id="em-report-code" type="text" class="em-report-input em-report-code-input" data-report-code inputmode="numeric" autocomplete="one-time-code" maxlength="6" placeholder="${r(e.report_ident_code_placeholder)}" /> 367 <div class="em-report-code-expiry">${r(e.report_ident_code_expiry)}</div> 368 <div class="em-report-error" data-report-error hidden></div> 369 <button type="button" class="em-report-primary-btn" data-report-verify>${r(e.report_ident_verify)}</button> 370 <button type="button" class="em-report-secondary-btn" data-report-resend>${r(e.report_ident_resend)}</button> 371 </div> 372 `}renderIdentPhone(e){return` 373 <div class="em-report-step" data-step="phone"> 374 <div class="em-report-prompt">${r(e.report_ident_phone_prompt)}</div> 375 <label class="em-report-field-label" for="em-report-phone">${r(e.report_ident_phone_label)}</label> 376 <div class="em-report-phone-field"> 377 <input id="em-report-phone" type="tel" class="em-report-input" data-report-phone inputmode="tel" autocomplete="tel" placeholder="${r(e.report_ident_phone_placeholder)}" value="${r(this.reportPhone)}" /> 378 </div> 379 <div class="em-report-error" data-report-error hidden></div> 380 <button type="button" class="em-report-primary-btn" data-report-send-sms>${r(e.report_ident_phone_send)}</button> 381 </div> 382 `}renderIdentSmsCode(e){return` 383 <div class="em-report-step" data-step="sms_code"> 384 <div class="em-report-prompt">${r(e.report_ident_sms_prompt)}</div> 385 <label class="em-report-field-label" for="em-report-sms-code">${r(e.report_ident_sms_label)}</label> 386 <input id="em-report-sms-code" type="text" class="em-report-input em-report-code-input" data-report-sms-code inputmode="numeric" autocomplete="one-time-code" maxlength="6" placeholder="${r(e.report_ident_sms_placeholder)}" /> 387 <div class="em-report-code-expiry">${r(e.report_ident_code_expiry)}</div> 388 <div class="em-report-error" data-report-error hidden></div> 389 <button type="button" class="em-report-primary-btn" data-report-sms-verify>${r(e.report_ident_verify)}</button> 390 <button type="button" class="em-report-secondary-btn" data-report-sms-resend>${r(e.report_ident_resend)}</button> 391 </div> 392 `}renderIdentReview(e){const t=this.reportEmail?`<div class="em-report-summary-row"><div class="em-report-summary-label">${r(e.report_ident_review_email)}</div><div class="em-report-summary-value">${r(this.reportEmail)}</div></div>`:"";return` 393 <div class="em-report-step" data-step="review"> 394 <div class="em-report-summary"> 395 <div class="em-report-summary-row"> 396 <div class="em-report-summary-label">${r(e.report_step3_review_reason)}</div> 397 <div class="em-report-summary-value">${r(this.reportReason?.label??"â")}</div> 398 </div> 399 <div class="em-report-summary-row"> 400 <div class="em-report-summary-label">${r(e.report_step3_review_details)}</div> 401 <div class="em-report-summary-value em-report-summary-details">${r(this.reportDetails)}</div> 402 </div> 403 ${t} 404 </div> 405 <div class="em-report-error" data-report-error hidden></div> 406 <button type="button" class="em-report-primary-btn" data-report-submit ${this.reportSubmitting?"disabled":""}> 407 ${r(e.report_step3_submit)} 408 </button> 409 </div> 410 `}renderIdentThanks(e){const t=document.documentElement.dataset.projectName??"Erosguia";return` 411 <div class="em-report-step" data-step="thanks"> 412 <div class="em-report-success"> 413 <div class="em-report-success-icon">${Re(40)}</div> 414 <div class="em-report-success-title">${r(e.report_step4_title)}</div> 415 <div class="em-report-success-meta"> 416 <div><b>${r(e.report_ident_thanks_number_label)}:</b> ${r(this.reportNumber??"")}</div> 417 </div> 418 <p class="em-report-success-text">${r(e.report_ident_thanks_follow)}</p> 419 <button type="button" class="em-report-primary-btn" data-report-done> 420 ${r(e.report_step4_done.replace("{projectName}",t))} 421 </button> 422 </div> 423 </div> 424 `}wireIdentStep(){const e=t=>this.querySelector(t);if(this.identStep==="reason"){this.querySelectorAll("[data-report-reason]").forEach(t=>{t.addEventListener("click",()=>{const i=Number(t.dataset.reportReason),a=t.dataset.reportReasonLabel??"";Number.isFinite(i)&&(this.reportReason={id:i,label:a},this.identStep="text",this.renderIdentStep())})});return}if(this.identStep==="text"){const t=e("[data-report-textarea]"),i=e("[data-report-char-count]"),a=e("[data-report-continue]"),s=this.pickStrings();t&&(t.focus(),t.addEventListener("input",()=>{this.reportDetails=t.value;const n=t.value.length,d=n>=C;i&&(i.textContent=s.report_step2_char_count.replace("{n}",String(n)),i.classList.toggle("is-valid",d)),a&&(a.disabled=!d)})),a?.addEventListener("click",()=>{this.reportDetails.length<C||(async()=>(this.reportIdentityProbe&&(a&&(a.disabled=!0),await this.reportIdentityProbe,a&&(a.disabled=!1)),this.identStep=this.reportIdentityVerified?this.needsSmsStep()?"phone":"review":"email",this.renderIdentStep()))()});return}if(this.identStep==="email"){const t=e("[data-report-email]"),i=e("[data-report-name]"),a=e("[data-report-send-code]");t?.focus(),t?.addEventListener("input",()=>{this.reportEmail=t.value,this.clearIdentError()}),i?.addEventListener("input",()=>{this.reportName=i.value}),a&&a.addEventListener("click",()=>{this.handleSendCode(a)});return}if(this.identStep==="code"){const t=e("[data-report-code]"),i=e("[data-report-verify]"),a=e("[data-report-resend]");t?.focus(),t?.addEventListener("input",()=>this.clearIdentError()),i&&i.addEventListener("click",()=>{this.handleVerifyCode(t,i)}),this.wireResendButton("email",a,s=>this.handleResendCode(s));return}if(this.identStep==="phone"){const t=e("[data-report-phone]"),i=e("[data-report-send-sms]");t?.focus(),t?.addEventListener("input",()=>{this.reportPhone=t.value,this.clearIdentError()}),t&&this.initPhoneField(t),i&&i.addEventListener("click",()=>{this.handleSendSms(i)});return}if(this.identStep==="sms_code"){const t=e("[data-report-sms-code]"),i=e("[data-report-sms-verify]"),a=e("[data-report-sms-resend]");t?.focus(),t?.addEventListener("input",()=>this.clearIdentError()),i&&i.addEventListener("click",()=>{this.handleVerifySms(t,i)}),this.wireResendButton("sms",a,s=>this.handleResendSms(s));return}if(this.identStep==="review"){e("[data-report-submit]")?.addEventListener("click",()=>{this.submitIdentifiedReport()});return}this.identStep==="thanks"&&e("[data-report-done]")?.addEventListener("click",()=>this.closeReportSheet())}showIdentError(e){const t=this.querySelector("[data-report-error]");t&&(t.textContent=e,t.hidden=!1)}clearIdentError(){const e=this.querySelector("[data-report-error]");e&&!e.hidden&&(e.hidden=!0,e.textContent="")}async checkReportIdentity(){try{const e=await fetch("/api/report/identity",{headers:{Accept:"application/json"}});if(!e.ok)return;const t=await e.json().catch(()=>null);t?.verified&&(this.reportIdentityVerified=!0,t.email&&(this.reportEmail=t.email),t.n
424ame&&(this.reportName=t.name),t.phone_verified&&(this.reportPhoneVerified=!0))}catch{}}needsSmsStep(){return this.reportSmsEnabled&&!this.reportPhoneVerified}async withPending(e,t){const i=e.textContent??"";e.disabled=!0,e.textContent=this.pickStrings().report_sending;try{return await t()}finally{e.textContent=i,e.disabled=!1}}async handleSendCode(e){if(e.disabled)return;const t=this.pickStrings().report_ident_send_code,i=await this.withPending(e,()=>this.sendReportCode());if(i.outcome==="sent"){this.noteSendWindow("email",x),this.identStep="code",this.renderIdentStep();return}i.outcome==="throttled"&&this.startResendCooldown("email",e,t,i.retryAfterS)}async handleVerifyCode(e,t){const i=(e?.value??"").trim();if(i.length<6){this.showIdentError(this.pickStrings().report_ident_code_invalid);return}if(t.disabled)return;await this.withPending(t,()=>this.verifyReportCode(i))&&(this.identStep=this.needsSmsStep()?"phone":"review",this.renderIdentStep())}clearResendCooldown(){window.clearInterval(this.resendCooldownTimer),this.resendCooldownTimer=0}resendWaitFor(e){return Math.max(0,Math.ceil((this.resendReadyAt[e]-Date.now())/1e3))}noteSendWindow(e,t){this.resendReadyAt[e]=Date.now()+t*1e3}wireResendButton(e,t,i){if(!t)return;t.addEventListener("click",()=>{i(t)});const a=this.resendWaitFor(e);a>0&&this.startResendCooldown(e,t,this.pickStrings().report_ident_resend,a)}startResendCooldown(e,t,i,a=x){this.noteSendWindow(e,a),this.clearResendCooldown();let s=a;t.disabled=!0;const n=()=>
424{if(s<=0){this.clearResendCooldown(),t.disabled=!1,t.textContent=i;return}t.textContent=`${i} (${s}s)`,s--};n(),this.resendCooldownTimer=window.setInterval(n,1e3)}async handleResendCode(e){if(e.disabled)return;const t=this.pickStrings().report_ident_resend,i=await this.withPending(e,()=>this.sendReportCode());i.outcome==="sent"?this.startResendCooldown("email",e,t):i.outcome==="throttled"&&this.startResendCooldown("email",e,t,i.retryAfterS)}async sendReportCode(){const e=this.pickStrings(),t=this.reportEmail.trim();if(!/^[^@\s]+@[^@\s]+\.[^@\s]+$/.test(t))return this.showIdentError(e.report_ident_email_invalid),{outcome:"rejected"};const i=this.reportName.trim(),a=await Le(P,"submit");try{const s=await fetch("/api/report/send-code",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(i?{email:t,name:i,token:a}:{email:t,token:a})});return s.ok?(this.reportCodeToken=await je(s),{outcome:"sent"}):s.status===429?(this.showReportFeedback(e.report_ident_already_sent),{outcome:"throttled",retryAfterS:De(s)}):(this.showReportFeedback(s.status>=500?e.report_ident_email_send_failed:e.report_error),{outcome:"rejected"})}catch{return this.showReportFeedback(e.report_error),{outcome:"rejected"}}}async verifyReportCode(e){const t=this.pickStrings(),i=this.reportName.trim();try{const a=await fetch("/api/report/verify-code",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:this.reportEmail.trim(),code:e,...i?{name:i}:{},...this.reportCodeToken?{verification_token:this.reportCodeToken}:{}})});return a.ok?(this.reportIdentityVerified=!0,!0):(this.showIdentError(await this.codeErrorMessage(a,t.report_ident_code_invalid)),!1)}catch{return this.showReportFeedback(t.report_error),!1}}async initPhoneField(e){try{const[{default:t},i]=await Promise.all([y(()=>import("./intlTelInputWithUtils.CgRLbpp0.js"),[]),Li(),y(()=>Promise.resolve({}),__vite__mapDeps([1]))]);if(!e.isConnected||this.identStep!=="phone"||this.phoneField)return;this.phoneField=t(e,{initialCountry:Ai(),separateDialCode:!0,strictMode:!0,countrySelectorMode:"FULLSCREEN",placeholderNumberPolicy:"AGGRESSIVE",...i?{uiTranslations:i}:{}})}catch(t){console.warn("[escort-modal] phone widget failed to load, using plain input",t)}}destroyPhoneField(){if(this.phoneField){try{this.phoneField.destroy()}catch{}this.phoneField=null}}async handleSendSms(e){if(e.disabled)return;const t=this.pickStrings().report_ident_phone_send,i=await this.withPending(e,()=>this.sendReportSms());if(i.outcome==="sent"){this.noteSendWindow("sms",x),this.identStep="sms_code",this.renderIdentStep();return}i.outcome==="throttled"&&this.startResendCooldown("sms",e,t,i.retryAfterS)}async handleVerifySms(e,t){const i=(e?.value??"").trim();if(i.length<6){this.showIdentError(this.pickStrings().report_ident_sms_invalid);return}if(t.disabled)return;await this.withPending(t,()=>this.verifyReportSms(i))&&(this.reportPhoneVerified=!0,this.reportSmsCompleted=!0,this.identStep="review",this.renderIdentStep())}async handleResendSms(e){if(e.disabled)return;const t=this.pickStrings().report_ident_resend,i=await this.withPending(e,()=>this.sendReportSms());i.outcome==="sent"?this.startResendCooldown("sms",e,t):i.outcome==="throttled"&&this.startResendCooldown("sms",e,t,i.retryAfterS)}async sendReportSms(){const e=this.pickStrings();let t;if(this.phoneField){if(!this.phoneField.isValidNumberPrecise())return this.showIdentError(e.report_ident_phone_invalid),{outcome:"rejected"};t=this.phoneField.getNumber()}else if(t=this.reportPhone.replace(/[^\d+]/g,""),!/^\+?\d{8,15}$/.test(t))return this.showIdentError(e.report_ident_phone_invalid),{outcome:"rejected"};this.reportPhone=t;const i=await Le(P,"submit");try{const a=await fetch("/api/report/send-sms",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({phone:t,token:i})});return a.ok?(this.reportSmsToken=await je(a),{outcome:"sent"}):a.status===429?(this.showIdentError(e.report_ident_already_sent),{outcome:"throttled",retryAfterS:De(a)}):(this.showIdentError(this.blockedNotice(a)??(a.status>=500?e.report_ident_sms_send_failed:e.report_error)),{outcome:"rejected"})}catch{return this.showReportFeedback(e.report_error),{outcome:"rejected"}}}blockedNotice(e){return e.status===403?this.pickStrings().report_blocked:null}async codeErrorMessage(e,t){const i=this.pickStrings(),a=this.blockedNotice(e);if(a)return a;
424if(e.status===429)return i.report_throttled;switch(await Ii(e)){case N.notFound:case N.expired:return i.report_ident_code_expired;case N.tooManyAttempts:return i.report_ident_code_attempts;case N.mismatch:default:return t}}async verifyReportSms(e){const t=this.pickStrings(),i=this.reportPhone.replace(/[^\d+]/g,"");try{const a=await fetch("/api/report/verify-sms",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({phone:i,code:e,...this.reportSmsToken?{verification_token:this.reportSmsToken}:{}})});return a.ok?!0:(this.showIdentError(await this.codeErrorMessage(a,t.report_ident_sms_invalid)),!1)}catch{return this.showReportFeedback(t.report_error),!1}}async submitIdentifiedReport(){if(this.reportSubmitting||!this.reportReason||this.currentId===null||this.reportDetails.length<C)return;const e=this.pickStrings();this.reportSubmitting=!0;const t=this.querySelector("[data-report-submit]");t&&(t.disabled=!0);try{const i=await fetch(`/api/ficha/${encodeURIComponent(this.currentId)}/report-identified`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({reason_id:this.reportReason.id,texto:this.reportDetails})});if(i.ok){const a=await i.json().catch(()=>({}));this.reportNumber=a.report_number??"",this.identStep="thanks",this.renderIdentStep();return}if(this.reportSubmitting=!1,t&&(t.disabled=!1),i.status===401){this.reportIdentityVerified=!1,this.identStep="email",this.renderIdentStep();return}this.showReportFeedback(this.blockedNotice(i)??(i.status===429?e.report_throttled:e.report_error))}catch{this.reportSubmitting=!1,t&&(t.disabled=!1),this.showReportFeedback(e.report_error)}}toggleFav(e,t){const i=this.currentFicha?Pi(this.currentFicha):void 0,a=Lt(t,i);e.setAttribute("aria-pressed",a?"true":"false"),a&&T("favorite","ficha",t)}async shareCurrent(e){const t=window.location.href,i=this.pickStrings().share_text;if(typeof navigator<"u"&&typeof navigator.share=="function")try{await navigator.share({title:e,text:i,url:t});return}catch{return}this.copyLink()}async copyLink(){const e=this.pickStrings();try{await navigator.clipboard.writeText(window.location.href),this.showToast(e.link_copied)}catch{this.showToast(e.copy_failed)}}showReportFeedback(e){const t=this.querySelector("[data-report-body] [data-report-error]")??this.querySelector("[data-report-error]");if(t){t.textContent=e,t.hidden=!1;return}this.showToast(e)}showToast(e){const t=this.querySelector("[data-toast]");t&&(t.textContent=e,t.hidden=!1,window.setTimeout(()=>{const i=this.querySelector("[data-toast]");i&&(i.hidden=!0)},Ei))}pickStrings(){return qe(ie)}}let ie=null,R=null,P,Ye;function Ri(){if(R)return R;const o=document.documentElement.dataset.category??"escorts";return R=fetch(`/escort-modal-strings.json?category=${encodeURIComponent(o)}`).then(e=>e.ok?e.json():null).then(e=>{const t=e?.modal;t&&typeof t=="object"&&(ie=t);const i=e?.config?.recaptchaSiteKey;typeof i=="string"&&i!==""&&(P=i);const a=e?.config?.privacyPolicyUrl;typeof a=="string"&&a!==""&&(Ye=a)}).catch(e=>{console.warn("[escort-modal] modal-strings fetch failed",e)}),R}let Ze=null,M=null;function Mi(){return M||(M=fetch("/ad-removal-strings.json").then(o=>o.ok?o.json():null).then(o=>{const e=o?.ad_removal?.remove_ad;typeof e=="string"&&e.length>0&&(Ze={remove_ad:e},document.querySelectorAll("[data-ad-removal-cta-label]").forEach(t=>{t.textContent=e}))}).catch(o=>{console.warn("[escort-modal] ad-removal-strings fetch failed",o)}),M)}function Oi(){return Ze??{remove_ad:"Remover anúncio"}}customElements.get("escort-modal")||customElements.define("escort-modal",Ni);function Pi(o){return{id:o.id,name:o.name,age:o.age,img:o.photos[0]?.url,href:`${window.location.pathname}#${o.id}`,city:o.city,nationality:o.nationality.name||void 0,photos_count:o.photos.length,verified:o.verified,quote:o.headline||void 0}}const qi={prev_aria:"Foto anterior",next_aria:"Próxima foto",fullscreen_aria:"Ver em ecrã inteiro",thumb_aria_template:"Foto {n}",verified_label:"Verificada",photo_verified_aria:"Foto verificada",stories_label:"Stories",stories_aria_template:"Ver {n} stories"};class Fi extends HTMLElement{photos=[];totalCount=0;stories=[];index=0;mainImg=null;predecoded=new Set;pendingWarmCancel=null;pendingStripCancel=null;coverSilhouette=null;photoVerifiedBadge=null;connectedCallback(){const e=this.dataset.photos??"[]";try{const i=JSON.parse(e);this.photos=Array.isArray(i)?i.filter(a=>typeof a=="object"&&a!==null&&typeof a.url=="string"&&typeof a.width=="number"&&typeof a.height=="number"):[]}catch{this.photos=[]}this.totalCount=Number(this.dataset.total)||this.photos.length;const t=this.dataset.stories??"[]";try{const i=JSON.parse(t);this.stories=Array.isArray(i)?i.filter(a=>typeof a=="object"&&a!==null&&typeof a.url=="string"&&typeof a.expires_at=="number").map(a=>({id:typeof a.id=="string"?a.id:"",url:a.url,expires_at:a.expires_at,created_at:typeof a.created_at=="number"?a.created_at:0})):[]}catch{this.stories=[]}this.render(),this.setAttribute("tabindex","0"),this.addEventListener("keydown",this.onKey)}disconnectedCallback(){this.removeEventListener("keydown",this.onKey),this.pendingWarmCancel?.(),this.pendingWarmCancel=null,this.pendingStripCancel?.(),this.pendingStripCancel=null}appendPhotos(e){if(!Array.isArray(e))return;const t=e.filter(s=>typeof s=="object"&&s!==null&&typeof s.url=="string"&&typeof s.width=="number"&&typeof s.height=="number");if(t.length===0)return;const i=this.photos.length;if(this.photos=[...this.photos,...t],i<=1){this.render();return}const a=this.querySelector(".fg-thumbs");a&&this.pendingStripCancel===null&&this.appendThumbs(a,i),this.updateCounter(),this.updateArrows(),this.predecodeNeighbors()}revealCover(e){const t=e.photo||e.photo_mobile;if(!t||this.photos.length===0)return;this.coverSilhouette||(this.coverSilhouette=this.photos[0]),this.photos[0]={...this.photos[0],url:t},this.mainImg&&this.index===0&&(this.mainImg.src=t);const i=this.querySelector(".fg-thumb img");i&&(i.src=t)}revertCover(){if(!this.coverSilhouette||this.photos.length===0)return;const e=this.coverSilhouette;this.photos[0]=e,this.coverSilhouette=null,this.mainImg&&this.index===0&&(this.mainImg.src=e.url);const t=this.querySelector(".fg-thumb img");t&&(t.src=e.url)}onKey=e=>{e.key==="ArrowRight"&&(this.go(this.index+1),e.preventDefault()),e.key==="ArrowLeft"&&(this.go(this.index-1),e.preventDefault())};go(e){const t=this.photos.length;t!==0&&(e<0||e>=t||e!==this.index&&(this.index=e,this.updateMain(),this.updateThumbs(),this.updateCounter(),this.updateArrows(),this.predecodeNeighbors()))}predecodeNeighbors(){const e=[this.photos[this.index+1],this.photos[this.index-1]].filter(i=>!!i&&!this.predecoded.has(i.url));if(e.length===0)return;const t=()=>{this.pendingWarmCancel=null;for(const i of e){if(this.predecoded.has(i.url))continue;this.predecoded.add(i.url);const a=new Image;a.decoding="async",a.src=i.url,a.decode?.().catch(()=>{})}};if(this.pendingWarmCancel?.(),"requestIdleCallback"in window){let i=!1;const a=requestIdleCallback(()=>{i=!0,t()});i||(this.pendingWarmCancel=()=>cancelIdleCallback(a))}else{const i=setTimeout(t,0);this.pendingWarmCancel=()=>clearTimeout(i)}}updateArrows(){const e=this.photos.length,t=this.querySelector(".fg-arrow--prev"),i=this.querySelector(".fg-arrow--next");t&&(t.hidden=this.index===0),i&&(i.hidden=this.index===e-1)}updateMain(){const e=this.photos[this.index];this.mainImg&&e&&(this.mainImg.src=e.url,e.width&&e.height&&(this.mainImg.width=e.width,this.mainImg.height=e.height)),this.photoVerifiedBadge&&(this.photoVerifiedBadge.hidden=!e?.verified)}updateThumbs(){this.querySelectorAll(".fg-thumb").forEach((e,t)=>{e.classList.toggle("is-active",t===this.index),e.setAttribute("aria-current",t===this.index?"true":"false")})}counterTotal(){return Math.max(this.photos.length,this.totalCount)}updateCounter(){const e=this.querySelector(".fg-counter");e&&(e.textContent=`${this.index+1}/${this.counterTotal()}`)}
424dispatchLightbox(e){this.dispatchEvent(new CustomEvent("ficha-gallery:open-lightbox",{bubbles:!0,composed:!0,detail:{photos:this.photos,index:e}}))}render(){if(this.pendingStripCancel?.(),this.pendingStripCancel=null,this.replaceChildren(),this.photos.length===0)return;const e=this.pickStrings(),t=this.dataset.tierSlug??"",i=this.dataset.tierLabel??"",a=this.dataset.tierColor??"",s=this.dataset.tierTitleColor??"",n=this.photos.length,d=this.photos[0],l=document.createElement("div");if(l.className="fg-stage",this.stories.length>0){const u={ficha_id:Number(this.dataset.fichaId)||0,ficha_name:this.dataset.fichaName??"",cover_url:d.url,items:this.stories.map(b=>({id:b.id,url:b.url,expires_at:b.expires_at}))};l.dataset.storiesGroups=JSON.stringify([u]);const _=document.createElement("button");_.type="button",_.className="fg-stories-badge",_.dataset.storyGroupIndex="0",_.setAttribute("aria-label",e.stories_aria_template.replace("{n}",String(this.stories.length))),_.innerHTML=` 425 ${Bi} 426 <span class="fg-stories-label">${K(e.stories_label)}</span> 427 <span class="fg-stories-count">${this.stories.length}</span> 428 `,l.appendChild(_)}const h=document.createElement("img");h.src=d.url,h.alt="",h.className="fg-main",h.loading="eager",h.decoding="async",d.width&&d.height&&(h.width=d.width,h.height=d.height),h.addEventListener("click",()=>this.dispatchLightbox(this.index)),h.onerror=()=>{h.src="/mocks/photos/placeholder.jpg"},l.appendChild(h),this.mainImg=h;const m=document.createElement("span");if(m.className="fg-counter",m.textContent=`1/${this.counterTotal()}`,m.setAttribute("aria-hidden","true"),l.appendChild(m),n>1){const u=document.createElement("button");u.type="button",u.className="fg-arrow fg-arrow--prev",u.setAttribute("aria-label",e.prev_aria),u.innerHTML=ji,u.hidden=!0,u.addEventListener("click",()=>this.go(this.index-1)),l.appendChild(u);const _=document.createElement("button");_.type="button",_.className="fg-arrow fg-arrow--next",_.setAttribute("aria-label",e.next_aria),_.innerHTML=Di,_.addEventListener("click",()=>this.go(this.index+1)),l.appendChild(_)}const v=document.createElement("button");if(v.type="button",v.className="fg-fullscreen",v.setAttribute("aria-label",e.fullscreen_aria),v.innerHTML=Hi,v.addEventListener("click",u=>{u.stopPropagation(),this.dispatchLightbox(this.index)}),l.appendChild(v),i&&t==="vip"){const u=document.createElement("span");u.className="fg-tier-badge",u.dataset.tier=t,a&&(u.style.background=a),s&&(u.style.color=s),u.innerHTML=`${Vi}<span class="fg-tier-label">${K(i)}</span>`,l.appendChild(u),l.classList.add("fg-stage--has-tier")}const g=document.createElement("span");if(g.className="fg-photo-verified",g.setAttribute("aria-label",e.photo_verified_aria),g.innerHTML=`${We(14)}<span class="fg-pv-label">${K(e.verified_label)}</span>`,g.hidden=!d.verified,l.appendChild(g),this.photoVerifiedBadge=g,this.appendChild(l),n>1){const u=document.createElement("div");u.className="fg-thumbs",this.appendChild(u),this.pendingStripCancel=O(()=>{this.pendingStripCancel=null,u.isConnected&&this.buildThumbs(u,e)})}this.predecodeNeighbors()}buildThumbs(e,t){const i=document.createDocumentFragment();this.photos.forEach((a,s)=>{i.appendChild(this.thumbButton(a,s,t,s===0))}),e.appendChild(i)}appendThumbs(e,t){const i=this.pickStrings(),a=document.createDocumentFragment();for(let s=t;s<this.photos.length;s++)a.appendChild(this.thumbButton(this.photos[s],s,i,!1));e.appendChild(a)}thumbButton(e,t,i,a){const s=document.createElement("button");s.type="button",s.className=`fg-thumb${a?" is-active":""}`,s.setAttribute("aria-label",i.thumb_aria_template.replace("{n}",String(t+1))),s.setAttribute("aria-current",a?"true":"false");const n=document.createElement("img");return n.alt="",n.loading="lazy",n.decoding="async",n.setAttribute("fetchpriority","low"),n.src=e.url,n.onerror=()=>{n.src="/mocks/photos/placeholder.jpg"},s.appendChild(n),s.addEventListener("click",()=>this.go(t)),s}pickStrings(){let e={};const t=this.dataset.strings;if(t)try{const a=JSON.parse(t);a&&typeof a=="object"&&(e=a)}
428catch{console.warn("[ficha-gallery] data-strings is not valid JSON")}const i={};for(const[a,s]of Object.entries(e))typeof s=="string"&&s!==""&&(i[a]=s);return{...qi,...i}}}customElements.get("ficha-gallery")||customElements.define("ficha-gallery",Fi);function K(o){return o.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}const ji='<svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="15 18 9 12 15 6"/></svg>',Di='<svg viewBox="0 0 24 24" width="24" height="24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="9 18 15 12 9 6"/></svg>',Hi=ze(18),Vi='<svg viewBox="0 0 24 24" width="12" height="12" fill="currentColor" stroke="none" aria-hidden="true"><path d="M2 7l4.5 3L12 4l5.5 6L22 7l-1.8 12H3.8L2 7zm3 14h14v2H5v-2z"/></svg>',Bi='<svg viewBox="0 0 12 12" width="10" height="10" fill="currentColor" aria-hidden="true"><path d="M3 2.2v7.6a.5.5 0 0 0 .76.43l6.18-3.8a.5.5 0 0 0 0-.86L3.76 1.77A.5.5 0 0 0 3 2.2Z"/></svg>',Ve=500,Wi="https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png",zi='© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a>',Gi="https://server.arcgisonline.com/ArcGIS/rest/services/World_Imagery/MapServer/tile/{z}/{y}/{x}",Ui="Tiles © Esri";class Ji extends HTMLElement{mapInstance=null;disposed=!1;async connectedCallback(){const e=Number(this.dataset.lat),t=Number(this.dataset.lng);if(!Number.isFinite(e)||!Number.isFinite(t)||e===0&&t===0)return;const[{default:i}]=await Promise.all([y(()=>import("./leaflet-src.CjPBq9Bq.js").then(h=>h.l),[]),y(()=>Promise.resolve({}),__vite__mapDeps([2]))]);if(this.disposed)return;const a=document.createElement("div");a.style.width="100%",a.style.height="240px",a.style.borderRadius="8px",a.style.overflow="hidden",this.replaceChildren(a);const s=i.tileLayer(Wi,{attribution:zi,maxZoom:19}),n=i.tileLayer(Gi,{attribution:Ui,maxZoom:19}),d=i.map(a,{center:[e,t],zoom:14,layers:[s],scrollWheelZoom:!0,zoomControl:!0});this.mapInstance=d,i.circle([e,t],{radius:Ve,color:"var(--color-brand, #b8962e)",fillColor:"var(--color-brand, #b8962e)",fillOpacity:.15,weight:2}).addTo(d),i.control.layers({Ruas:s,Satélite:n},void 0,{collapsed:!1,position:"topright"}).addTo(d);const l=i.latLng(e,t).toBounds(Ve*2);d.fitBounds(l)}disconnectedCallback(){this.disposed=!0;const e=this.mapInstance;e&&typeof e.remove=="function"&&e.remove(),this.mapInstance=null}}customElements.get("ficha-map")||customElements.define("ficha-map",Ji);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.