Help
RSS
API
Feed
Maltego
Contact
Domain > br.pornmaker.org
×
More information on this domain is in
AlienVault OTX
Is this malicious?
Yes
No
DNS Resolutions
Date
IP Address
2026-02-27
172.67.221.200
(
ClassC
)
Port 80
HTTP/1.1 200 OKDate: Fri, 27 Feb 2026 06:04:51 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflareNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}Vary: Accept-EncodingSet-Cookie: PHPSESSIDm1hq8st7gg9o3tdnftod8m6fcc; path/Expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidatePragma: no-cacheStrict-Transport-Security: max-age31536000Alt-Svc: h3:443; ma86400Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sckFIsfhNkxLX7JbVfMpsjiKnU9Lco0YjxTAe15QivVUCAVbxSf69BLuhc7HsMO2L1CakHkiCTFsEsKlJjbiLHcTgTh%2FLYWpYuLlrxt3tJaY%3D}}cf-cache-status: DYNAMICCF-RAY: 9d457cb6889d58c2-PDX !DOCTYPE html>html langpt-BR>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>PornMaker - Crie Imagens Pornô com IA Gratuitamente | Gerador de Fotos por IA Profissional/title> meta namedescription contentTransforme fotos em imagens pornô impressionantes com nosso PornMaker avançado. Crie fotos de qualidade profissional em segundos. Gratuito para testar, com saída em alta resolução para redes sociais e uso comercial.> link relcanonical hrefhttps://br.pornmaker.org> link relicon typeimage/png href/favicon-96x96.png sizes96x96 /> link relicon typeimage/svg+xml href/favicon.svg /> link relshortcut icon href/favicon.ico /> link relapple-touch-icon sizes180x180 href/apple-touch-icon.png /> link relmanifest href/site.webmanifest /> script srchttps://cdn.tailwindcss.com>/script> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@300;400;500;600;700&displayswap relstylesheet> !-- Image Compare Viewer --> link relstylesheet hrefhttps://unpkg.com/image-compare-viewer/dist/image-compare-viewer.min.css> script srchttps://unpkg.com/image-compare-viewer/dist/image-compare-viewer.min.js>/script> link relstylesheet href/assets/css/style.css> script src/assets/js/tailwind-config.js>/script> /head>body classbg-black text-white font-sans> !-- Navigation --> !-- Navigation -->nav idnavbar classnavbar py-4 md:py-12 px-4 md:px-8> div classcontainer mx-auto flex justify-between items-center> !-- Left: Logo --> div classflex-shrink-0> a href/ classflex items-center> img src/assets/images/logo-pornmaker.svg altLogo da Pornmaker classh-8 w-auto> /a> /div> !-- Center: Menu (Desktop only) --> div classhidden lg:flex flex-1 justify-center items-center space-x-12> a href/ classtext-base lg:text-lg transition-colors whitespace-nowrap text-primary font-semibold>Gerador de Pornô por IA/a> a href/deepfake classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary relative> Deepfake span classabsolute -top-2 -right-8 bg-gradient-to-r from-pink-500 to-red-500 text-white text-xs font-bold px-2 py-1 rounded-full transform scale-75 shadow-lg>HOT/span> /a> a href/image-undress classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Despir por IA/a> a href/swap-face classhidden text-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Swap Face/a> a href/bikini classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Biquíni/a> a href/pricing classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Preços/a> a href/free-credits classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary relative> i classfas fa-gift text-pink-400 text-lg transform scale-90 drop-shadow aria-hiddentrue>/i> Créditos Grátis /a> /div> !-- Credits Display --> div classflex items-center bg-gray-800/50 backdrop-blur-sm rounded-full mr-4 px-3 py-2 border-2 border-yellow-400> i classfas fa-coins text-yellow-400 mr-1 sm:mr-2 text-sm>/i> span classtext-yellow-400 font-medium>14/span> span classtext-xs hidden sm:inline ml-1>créditos grátis/span> /div> !-- Mobile Menu Button --> div classlg:hidden> button idmobileMenuBtn classtext-white hover:text-primary transition-colors> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6h16M4 12h16M4 18h16>/path> /svg> /button> /div> !-- Right: User/Login Section --> div classflex-shrink-0 hidden lg:flex items-center space-x-4> !-- Not logged in --> a href/login classblock w-full text-center bg-primary hover:bg-primary-dark text-white font-medium py-3 px-6 rounded-lg transition-all sexy-gradient hover:opacity-90 rounded-xl transition-all breathing-button shadow-lg rounded-full> Entrar /a> /div> /div> !-- Mobile Menu --> div idmobileMenu classlg:hidden fixed top-0 left-0 min-h-screen w-full h-full bg-black/90 backdrop-blur-md z-50 hidden> div classflex flex-col h-full> !-- Mobile Menu Header --> div classflex justify-between items-center p-4 py-5 border-b border-gray-700> img src/assets/images/logo-pornmaker.svg altLogo da Pornmaker classh-8 w-auto> button idcloseMobileMenu classtext-white hover:text-primary transition-colors> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM6 18L18 6M6 6l12 12>/path> /svg> /button> /div> !-- Mobile Menu Items --> div classflex-1 flex flex-col py-8 px-4 space-y-2> a href/ classtext-lg transition-colors text-primary font-semibold py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Gerador de Pornô por IA/a> a href/deepfake classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200 relative> Deepfake span classabsolute right-1 bg-gradient-to-r from-pink-500 to-red-500 text-white text-xs font-bold px-2 py-1 rounded-full transform scale-75 shadow-lg>HOT/span> /a> a href/image-undress classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Despir por IA/a> a href/swap-face classhidden text-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Trocar Rosto/a> a href/bikini classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Biquíni/a> a href/pricing classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Preços/a> a href/free-credits classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200 relative> i classfas fa-gift w-4 mr-3 text-pink-400>/i>Créditos Grátis /a> /div> !-- Mobile Menu Footer --> div classborder-t border-gray-700> a href/login classblock w-full text-center bg-primary hover:bg-primary-dark text-white font-medium py-3 px-6 rounded-lg transition-all sexy-gradient hover:opacity-90 rounded-xl transition-all breathing-button shadow-lg> Entrar /a> /div> /div> /div>/nav>script>// Mobile menu functionalityconst mobileMenuBtn document.getElementById(mobileMenuBtn);const mobileMenu document.getElementById(mobileMenu);const closeMobileMenu document.getElementById(closeMobileMenu);if (mobileMenuBtn && mobileMenu && closeMobileMenu) { // Open mobile menu mobileMenuBtn.addEventListener(click, function() { mobileMenu.classList.remove(hidden); document.body.style.overflow hidden; // Prevent background scroll }); // Close mobile menu function closeMobileMenuFunc() { mobileMenu.classList.add(hidden); document.body.style.overflow ; // Restore scroll } closeMobileMenu.addEventListener(click, closeMobileMenuFunc); // Close mobile menu when clicking on backdrop mobileMenu.addEventListener(click, function(e) { if (e.target mobileMenu) { closeMobileMenuFunc(); } }); // Close mobile menu on escape key document.addEventListener(keydown, function(e) { if (e.key Escape && !mobileMenu.classList.contains(hidden)) { closeMobileMenuFunc(); } });}// Toggle user menufunction toggleUserMenu() { const userMenu document.getElementById(user-menu); if (userMenu) { userMenu.classList.toggle(hidden); }}// Close dropdowns when clicking outsidedocument.addEventListener(click, function(event) { const userMenu document.getElementById(user-menu); const userButton document.querySelector(onclicktoggleUserMenu()); // Close user menu if clicking outside if (userMenu && !userMenu.contains(event.target) && !userButton.contains(event.target)) { userMenu.classList.add(hidden); }});/script> main> !-- Age Verification Modal -->div idageVerificationModal classfixed inset-0 z-50 flex items-center justify-center bg-black/20 backdrop-blur-md hidden> div classbg-gray-900 border border-gray-700 rounded-2xl p-8 max-w-md mx-4 shadow-2xl> div classtext-center> !-- RTA Icon --> div classmx-auto mb-4 w-16 h-16 flex items-center justify-center> img src/assets/images/rta-white.svg altRTA - Restricted to Adults classw-full h-full object-contain /> /div> !-- Content --> div classtext-gray-300 text-sm leading-relaxed mb-6 space-y-3> p>Aviso! Este site é apenas para adultos. Contém imagens adultas geradas por IA./p> p>Ao entrar neste site, reconheço que tenho 18 anos ou mais. Qualquer conteúdo gerado que se assemelhe a pessoas reais é puramente coincidência./p> /div> !-- Buttons --> div classflex space-x-3> button iddeclineBtn classflex-1 bg-gray-700 hover:bg-gray-600 text-white font-medium py-3 px-4 rounded-lg transition-all> Recusar /button> button idacceptBtn classflex-1 sexy-gradient hover:opacity-90 text-white font-medium py-3 px-4 rounded-lg transition-all> Aceitar /button> /div> /div> /div>/div>!-- Auth Modal will be inserted here by auth-modal.js -->!-- Hero Section with Integrated Generator -->section classgradient-bg min-h-screen flex flex-col justify-center pt-32 md:pt-44 pb-16> div classcontainer mx-auto px-4> !-- Hero Title & Description --> div classtext-center mb-12> h1 classtext-6xl font-bold mb-6> span classtext-sexy-gradient>Gerador de Pornô por IA/span> /h1> p classtext-2xl text-gray-300 mb-4> Crie conteúdo adulto impressionante gerado por IA em segundos /p> p classtext-lg text-gray-400 max-w-3xl mx-auto mb-8> O melhor Gerador de Pornô por IA gratuito. Crie suas próprias imagens sexys e XXX geradas por IA, incluindo hentai, com alguns cliques ou poucos prompts. /p> !-- Feature badges --> div idfeatureBadges classflex flex-wrap justify-center gap-4 mb-8> span classbg-gray-800/50 backdrop-blur-sm text-secondary px-4 py-2 rounded-full text-sm font-medium border border-secondary/20>Qualidade HD/span> span classbg-gray-800/50 backdrop-blur-sm text-primary px-4 py-2 rounded-full text-sm font-medium border border-primary/20>Login Rápido/span> span classbg-gray-800/50 backdrop-blur-sm text-accent px-4 py-2 rounded-full text-sm font-medium border border-accent/20>Gerações Ilimitadas/span> span classbg-gray-800/50 backdrop-blur-sm text-secondary px-4 py-2 rounded-full text-sm font-medium border border-secondary/20>Alta Qualidade/span> /div> /div> !-- Integrated AI Generator --> div classmax-w-6xl mx-auto> div classbg-gray-900/80 backdrop-blur-sm rounded-2xl p-4 lg:p-6 border border-gray-700/50 hover:border-primary shadow-2xl> !-- Generator Interface --> div classmb-6> label classblock text-white text-lg font-medium mb-3>Prompt de Descrição/label> textarea idheroPromptInput rows4 placeholderO que você quer ver? classw-full p-4 bg-gray-800/70 text-white text-lg rounded-xl border-2 border-gray-600/50 focus:border-primary focus:outline-none resize-none backdrop-blur-sm transition-all duration-300 min-h-280px sm:min-h-140px >/textarea> /div> !-- Settings and Controls Container --> div classflex flex-col lg:flex-row lg:justify-between lg:items-center gap-6 mb-6> !-- Generation Settings --> div classflex flex-wrap lg:justify-start gap-3 md:gap-6> !-- Fastest Speed --> div classflex items-center space-x-2> label classinline-flex items-center cursor-pointer> input typecheckbox idfastest-speed classsr-only peer checked> div classrelative w-11 h-6 bg-gray-600 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content- after:absolute after:top-2px after:left-2px after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-orange-500>/div> /label> span classtext-white text-sm font-medium whitespace-nowrap>Velocidade máxima/span> /div> !-- High Quality --> div classflex items-center space-x-2> label classinline-flex items-center cursor-pointer> input typecheckbox idhigh-quality classsr-only peer> div classrelative w-11 h-6 bg-gray-600 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content- after:absolute after:top-2px after:left-2px after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-orange-500>/div> /label> span classtext-white text-sm font-medium whitespace-nowrap>Alta Qualidade/span> /div> /div> !-- Action Buttons --> div classflex flex-col sm:flex-row gap-4 justify-center lg:justify-end items-center> button idheroRandomBtn classw-full sm:w-auto bg-primary/50 hover:bg-primary/70 text-white font-medium py-3 px-6 rounded-xl transition-all backdrop-blur-sm border-2 border-primary> i classfas fa-dice mr-2>/i> Aleatório /button> button idheroGenerateBtn classw-full sm:w-auto sexy-gradient hover:opacity-90 text-white font-semibold py-4 px-12 rounded-xl transition-all breathing-button shadow-lg> i classfas fa-magic mr-2>/i> Gerar /button> /div> /div> /div> /div> !-- Generation Results --> div idgenerationResults classmax-w-6xl mx-auto mt-8 hidden> div classbg-gray-900/60 backdrop-blur-sm rounded-2xl p-6 border border-gray-700/30> h3 classtext-2xl font-bold text-white mb-4 text-center> i classfas fa-images mr-2 text-primary>/i> Resultados da Geração /h3> div classtext-center mb-6> p classtext-sm text-yellow-400 bg-yellow-500/10 border border-yellow-500/20 rounded-lg px-4 py-2 inline-block> i classfas fa-shield-alt mr-2>/i> strong>Não se esqueça de baixar seus arquivos./strong> Para maior privacidade, as imagens geradas nunca são armazenadas em nossos servidores. /p> /div> div idresultsContainer classgrid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6> !-- Generation results will be dynamically inserted here --> /div> /div> /div> /div>/section>!-- Get Inspired Section -->section classbg-gray-900 py-16> div classcontainer mx-auto px-4> h2 classtext-4xl font-bold text-center mb-4>Inspire-se/h2> p classtext-gray-400 text-center mb-12 max-w-2xl mx-auto> Inspire-se com os exemplos do nosso gerador por IA /p> !-- Example Gallery --> div idgalleryContainer classmax-w-6xl mx-auto columns-2 md:columns-3 lg:columns-4 gap-4 space-y-4> !-- Dynamic waterfall content will be generated here --> /div> /div>/section>!-- Key Features Section -->section classbg-black py-16> div classcontainer mx-auto px-4> h2 classtext-4xl font-bold text-center mb-4>Principais Recursos do Gerador de Pornô por IA/h2> p classtext-gray-400 text-center max-w-3xl mx-auto mb-16> Experimente a próxima geração de criação de conteúdo adulto por IA — poderosa, gratuita e com foco em privacidade. /p> div classgrid md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>🆓/div> h3 classtext-xl font-bold mb-4 text-white>Criação Sem Custo/h3> p classtext-gray-400> O primeiro gerador de pornô por IA totalmente gratuito, sem limites de uso ou necessidade de cadastro. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>⭐/div> h3 classtext-xl font-bold mb-4 text-white>Qualidade de Última Geração/h3> p classtext-gray-400> Modelos avançados de IA, gerando imagens adultas fotorrealistas com detalhes excepcionais e controle de estilo. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>📝/div> h3 classtext-xl font-bold mb-4 text-white>Compreensão Avançada de Texto/h3> p classtext-gray-400> Capacidade superior de texto para imagem com interpretação precisa de prompts complexos. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>⚡/div> h3 classtext-xl font-bold mb-4 text-white>Geração Ultrarrápida/h3> p classtext-gray-400> Pipeline otimizado que garante geração rápida sem comprometer a qualidade. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>🔒/div> h3 classtext-xl font-bold mb-4 text-white>Privacidade Aprimorada/h3> p classtext-gray-400> Política de não retenção de dados – seus prompts e imagens geradas nunca são armazenados. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>🎨/div> h3 classtext-xl font-bold mb-4 text-white>Suporte a Múltiplos Estilos/h3> p classtext-gray-400> Crie imagens em vários estilos artísticos, do fotorrealismo ao anime, artístico ao fantasia. /p> /div> /div> /div>/section>section classbg-gradient-to-r from-primary/10 to-secondary/10 py-24> !-- Statistics Section --> div classtext-center max-w-6xl mx-auto> h2 classtext-2xl font-bold mb-10 text-white>Confiado por Milhões/h2> div classgrid grid-cols-2 md:grid-cols-4 gap-8> div> div classtext-4xl font-bold text-primary mb-2>3M+/div> div classtext-gray-400>Usuários Ativos Mensais/div> /div> div> div classtext-4xl font-bold text-primary mb-2>1,530/div> div classtext-gray-400>Imagens por Minuto/div> /div> div> div classtext-4xl font-bold text-primary mb-2>4.9/div> div classtext-gray-400>Índice de Qualidade/div> /div> div> div classtext-4xl font-bold text-primary mb-2>24/7/div> div classtext-gray-400>Disponível/div> /div> /div> /div>/section>!-- FAQ Section -->section classbg-black py-16> div classcontainer mx-auto px-4> h2 classtext-4xl font-bold text-center mb-4>Perguntas Frequentes/h2> p classtext-gray-400 text-center mb-12 max-w-2xl mx-auto> Tem mais perguntas? Fale conosco em a href/cdn-cgi/l/email-protection class__cf_email__ data-cfemail03707673736c717743736c716d6e626866712d6c7164>email protected/a> /p> div classmax-w-3xl mx-auto> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>O que é o Gerador de Pornô por IA e como funciona?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker é o primeiro gerador de imagens adultas por IA totalmente gratuito e ilimitado. Ele permite criar conteúdo adulto de alta qualidade a partir de descrições em texto, sem cadastro e sem limites de uso. Basta descrever o que deseja criar e nossa IA avançada gerará imagens fotorrealistas em segundos./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>O Gerador de Pornô por IA é realmente gratuito?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Sim, o PornMaker é totalmente gratuito! Nosso compromisso é ser a maior e mais poderosa plataforma gratuita de geração de imagens adultas por IA. Não há tarifas ocultas, não precisa de cartão e não há limites de uso. Você pode gerar conteúdo ilimitado sem restrições./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Quais estilos de moda praia posso gerar com o PornMaker?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker oferece uma ampla variedade de estilos de moda praia para todos os gostos. É possível gerar biquínis triangulares clássicos, tomara que caia, cintura alta retrô, esportivos, maiôs elegantes, recortes modernos, fio dental e looks de designers. A plataforma também suporta várias cores, padrões, texturas e detalhes como babados, estampas e acabamentos metálicos. Descreva o estilo desejado e o PornMaker criará resultados personalizados./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Quão realistas são as imagens geradas pelo PornMaker?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker produz imagens extremamente realistas, com qualidade de estúdio que rivaliza com fotografia profissional. As redes neurais avançadas são treinadas com milhões de imagens em alta resolução, permitindo entender iluminação, texturas de tecidos, proporções corporais e poses naturais. As imagens geradas apresentam sombras, reflexos e comportamento do tecido com precisão, tornando-as quase indistinguíveis de fotos reais — ideal para marketing profissional, redes sociais e aplicações comerciais./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Posso usar comercialmente as imagens geradas por IA?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Sim. As imagens criadas com o PornMaker podem ser usadas comercialmente, incluindo campanhas de marketing, anúncios em redes sociais, sites, materiais impressos e catálogos. A saída em alta resolução é perfeita para uso profissional e você mantém a titularidade das imagens geradas. Consulte nossos Termos de Serviço para diretrizes específicas e possíveis restrições./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>As imagens são adequadas para redes sociais como Instagram?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Com certeza! As imagens do PornMaker são otimizadas para redes como Instagram, TikTok, Facebook, X (Twitter) e Pinterest. A alta qualidade atende aos padrões das plataformas, garantindo excelente potencial de engajamento. O PornMaker cria conteúdos visualmente atraentes que performam muito bem nas redes, ajudando influenciadores, marcas e criadores a ampliar presença com imagens que chamam atenção e geram interação./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Quanto tempo leva para gerar uma imagem?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker é otimizado para velocidade e eficiência. A maioria das imagens é gerada em 10–30 segundos, dependendo da complexidade do pedido e da carga do servidor. Infraestrutura de GPU e algoritmos otimizados garantem rapidez sem comprometer a qualidade. Diferente da fotografia tradicional, que exige horas de preparação e edição, o PornMaker entrega resultados profissionais quase instantaneamente — ideal para projetos urgentes e criação rápida de conteúdo./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Meus dados estão seguros ao usar o PornMaker?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Privacidade e segurança são prioridades no PornMaker. Todas as fotos enviadas são processadas por conexões criptografadas e nunca são armazenadas permanentemente em nossos servidores. O processamento ocorre em ambientes seguros e isolados, e as imagens são excluídas automaticamente após a geração. Estamos em conformidade com padrões internacionais de proteção de dados (incluindo GDPR), garantindo que suas informações e criações permaneçam privadas e seguras./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Posso personalizar e editar as imagens geradas?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Sim, você tem controle criativo total sobre as imagens geradas. A saída em alta resolução pode ser editada em qualquer software de edição; você pode adicionar marca d’água, logotipos ou elementos de branding. Como as imagens são suas, é livre para ajustar cores, iluminação, recortar composições ou combinar resultados para criar colagens únicas. O PornMaker oferece uma base excelente para aprimoramentos criativos e pós-produção profissional./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>O que torna o PornMaker diferente de outras ferramentas de imagem por IA?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker se destaca pelo treinamento especializado em estética de moda e estilos visuais adultos. Diferente de geradores genéricos, nosso sistema entende princípios de design, comportamento de tecidos e tendências visuais. Os modelos são treinados com conjuntos curados, garantindo realismo, fidelidade de estilo e autenticidade. Além disso, a interface amigável torna a geração de imagens de qualidade profissional acessível a todos, independentemente de conhecimento técnico./p> /div> /div> /div> /div>/section>!-- CTA Section -->section classbg-gray-900 py-16> div classcontainer mx-auto px-4 text-center> h2 classtext-4xl font-bold mb-4>Pronto para Começar a Criar com o Gerador de Pornô por IA?/h2> p classtext-gray-400 mb-8 max-w-xl mx-auto> Join millions of creators who trust our AI Porn Generator for professional-quality adult content. Start creating stunning AI-generated images today! /p> button onclickscrollToTop() classsexy-gradient hover:opacity-90 text-white font-semibold py-4 px-12 rounded-full text-xl shadow-lg breathing-button> Começar Agora /button> div classmt-6 flex flex-wrap justify-center items-center gap-6 text-sm text-gray-400> span>✓ Ultra HD Quality/span> span>✓ Quick Registration/span> span>✓ Unlimited Generations/span> span>✓ Instant High-Quality Results/span> /div> /div>/section>style>/* Progress bar animation */@keyframes progress { 0% { width: 0%; } 50% { width: 70%; } 100% { width: 85%; }}/* Image loading animation */.loaded { opacity: 1 !important;}/* Status badge styles */.status-badge { border: 1px solid currentColor; border-opacity: 0.3;}/* Generation result card hover effects */.generation-card:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);}/* Loading spinner optimization */.loading-spinner { filter: drop-shadow(0 0 8px rgba(var(--tw-color-primary), 0.3));}/* Blur background effect optimization */.blur-background { backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); background: rgba(55, 65, 81, 0.1);}/* Image container optimization */.image-container { background: linear-gradient(135deg, rgba(17, 24, 39, 0.8), rgba(55, 65, 81, 0.6));}/* Modal styles moved to auth-modal.js *//* Input Error States - Glowing Animation */.input-error { border-color: #ef4444 !important; box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1), 0 0 20px rgba(239, 68, 68, 0.3) !important; animation: errorGlow 2s ease-in-out infinite;}@keyframes errorGlow { 0%, 100% { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1), 0 0 20px rgba(239, 68, 68, 0.3); } 50% { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2), 0 0 30px rgba(239, 68, 68, 0.5); }}.input-error-shake { animation: errorShake 0.6s ease-in-out;}@keyframes errorShake { 0%, 20%, 40%, 60%, 80% { transform: translateX(-2px); } 10%, 30%, 50%, 70%, 90% { transform: translateX(2px); } 100% { transform: translateX(0); }}/style>!-- Load Auth Modal Module -->script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script src/assets/js/auth-modal.js>/script>script>// Auth modal functionality is now handled by auth-modal.js// Show input error with glowing effectfunction showInputError(inputId) { const input document.getElementById(inputId); if (input) { // Add error classes with animation input.classList.add(input-error, input-error-shake); // Focus on input input.focus(); // Remove shake animation after it completes setTimeout(() > { input.classList.remove(input-error-shake); }, 600); // Auto-clear error after 4 seconds setTimeout(() > { clearInputError(inputId); }, 4000); }}// Clear input error statefunction clearInputError(inputId) { const input document.getElementById(inputId); if (input) { input.classList.remove(input-error, input-error-shake); }}// Initialize input error clearing functionalitydocument.addEventListener(DOMContentLoaded, function() { // Add input event listener to clear errors when user starts typing const heroPromptInput document.getElementById(heroPromptInput); if (heroPromptInput) { heroPromptInput.addEventListener(input, function() { clearInputError(heroPromptInput); }); // Also clear on focus heroPromptInput.addEventListener(focus, function() { clearInputError(heroPromptInput); }); }});// Copy prompt text functionalityfunction copyPromptText(prompt) { // Create a temporary textarea element to copy text const textarea document.createElement(textarea); textarea.value prompt; document.body.appendChild(textarea); textarea.select(); textarea.setSelectionRange(0, 99999); // For mobile devices try { document.execCommand(copy); // Show flash message (function defined in app.js) showFlashMessage(success, Prompt copiado para a área de transferência!); } catch (err) { console.error(Falha ao copiar prompt: , err); showFlashMessage(error, Falha ao copiar o prompt); } document.body.removeChild(textarea);}// Age Verification Modal functionalitydocument.addEventListener(DOMContentLoaded, function() { const modal document.getElementById(ageVerificationModal); const acceptBtn document.getElementById(acceptBtn); const declineBtn document.getElementById(declineBtn); // Check if age has been verified const hasVerified localStorage.getItem(ageVerified); if (hasVerified true) { // If verified, keep modal hidden modal.classList.add(hidden); } else { // If not verified, show modal modal.classList.remove(hidden); } // Accept button click event acceptBtn.addEventListener(click, function() { // Save verification status to local storage localStorage.setItem(ageVerified, true); // Hide modal modal.classList.add(hidden); }); // Decline button click event declineBtn.addEventListener(click, function() { // Redirect to other website or show prompt alert(You must be 18+ to access this website.); // Option to redirect to other website window.location.href https://www.pornmaker.org/; }); // Prevent clicking overlay to close modal modal.addEventListener(click, function(e) { if (e.target modal) { // Prevent default behavior, user must choose Accept or Decline e.preventDefault(); } });}); // Hero Generator functionality const heroPromptInput document.getElementById(heroPromptInput); const heroRandomBtn document.getElementById(heroRandomBtn); const heroGenerateBtn document.getElementById(heroGenerateBtn); // Global variable to store preloaded prompts let availablePrompts Two 20 year old girls having sex and taking a selfie together while climaxing, full body, nude, topless, creampie, cum covered, orgasm, happy, semen on face, semen in hair, semen in mouth, breast, lesbians, very pale skin, dark hair, messy, submissive, slut, cum slut, kneeling, fake cum, bukkake, semen all, over her body, wet squirting, dildo in pussy, wet pussy, cum on tits, cum in mouth, suggestive, aheago, chubby, huge breasts, facesitting, lezdom, wet, rain, nurse, hospital, semen, semen on tits, licking semen, 3 women, standing, bent over, (tall:1.3), (long legs:1.3), (lean legs:1.3), thigh gap, tight asses, asses visible, no panties, upskirt, high heels, full body view, ultra high image quality with clear, detailed perfect face, most gorgeous face, no makeup, very aesthetic, black haired twin tails, white teeth, closed eyes, embarrassed, orgasm, defined crisp glossy pink lips, cutest cutest sweetheart in universe, light fair skin, very hair fringe, extreme blush, arched back, super waist, perfect anatomical body, hipbone visible, snub upturned nose, extremely philtrum, extremely waist, kawii hips, shaved pussy, slippery shaved pussy, tight pussy, kawii poor chested, poor chested, androgynouschested, ecstasy, orgasm, legs like a model, bend and open wide legs, arms together, elongated erect nipples, puffy pointy nipples, detailed nipples, puffy areola, oiled skin, close up, top down, moan so loud, night, rim lighting, bed, pink kawii pink pajama almost taken off, kneeling, head tilted back ; // Preload prompts from generator.json async function preloadPrompts() { try { const response await fetch(/json/generator.json); const data await response.json(); if (data.generated_images && data.generated_images.length > 0) { // Extract all prompts from the data availablePrompts data.generated_images.map(item > item.prompt); console.log(`Loaded ${availablePrompts.length} prompts from generator.json`); } } catch (error) { console.error(Error preloading prompts:, error); // Keep fallback prompts } } // Preload prompts when page loads preloadPrompts(); // Random prompt button - Use preloaded prompts if (heroRandomBtn && heroPromptInput) { heroRandomBtn.addEventListener(click, function(e) { e.preventDefault(); if (availablePrompts.length > 0) { const randomIndex Math.floor(Math.random() * availablePrompts.length); const randomPrompt availablePromptsrandomIndex; heroPromptInput.value randomPrompt; } }); } // Generate button functionality - Integrated with generator-api.php if (heroGenerateBtn && heroPromptInput) { heroGenerateBtn.addEventListener(click, async function(e) { e.preventDefault(); // Check if user has sufficient credits (includes login check) - highest priority if (!(await authModal.requireCredits(10))) { return; // authModal will show appropriate modal if needed } // Then check if prompt is provided const prompt heroPromptInput.value.trim(); if (!prompt) { showInputError(heroPromptInput); return; } // Show loading state heroGenerateBtn.innerHTML i classfas fa-spinner fa-spin mr-2>/i>生成中...; heroGenerateBtn.disabled true; // Create and insert generation result placeholder const generationId gen_ + Date.now(); createGenerationPlaceholder(generationId, prompt); try { // Call generator-api.php to start generation const generateResponse await callGeneratorAPI(prompt); if (generateResponse.success && generateResponse.task_id) { // Start polling for results pollGenerationResult(generateResponse.task_id, generationId); } else { // Generation request failed updateGenerationResult(generationId, null, error, generateResponse.message || Falha na solicitação de geração); } } catch (error) { console.error(Generator API Error:, error); updateGenerationResult(generationId, null, error, Erro do sistema, contate o administrador); } finally { // Restore button state (allow multiple generations) setTimeout(() > { heroGenerateBtn.innerHTML i classfas fa-magic mr-2>/i>Generate; heroGenerateBtn.disabled false; }, 1000); } }); } // Enter key shortcut for generation if (heroPromptInput && heroGenerateBtn) { heroPromptInput.addEventListener(keypress, function(e) { if (e.key Enter && !e.shiftKey) { e.preventDefault(); heroGenerateBtn.click(); } }); }// FAQ functionalitydocument.addEventListener(DOMContentLoaded, function() { const faqItems document.querySelectorAll(.faq-item); faqItems.forEach(item > { const header item.querySelector(.faq-header); const answer item.querySelector(.faq-answer); const icon item.querySelector(.faq-icon); // Initially hide all answers answer.style.display none; header.addEventListener(click, function() { const isOpen answer.style.display block; // Close all other FAQ items faqItems.forEach(otherItem > { const otherAnswer otherItem.querySelector(.faq-answer); const otherIcon otherItem.querySelector(.faq-icon); otherAnswer.style.display none; otherIcon.textContent +; }); // Toggle current item if (!isOpen) { answer.style.display block; icon.textContent −; } }); });});// Gallery functionality - Load from generator.jsondocument.addEventListener(DOMContentLoaded, function() { loadGalleryImages();});async function loadGalleryImages() { try { const response await fetch(/json/generator.json); const data await response.json(); const galleryContainer document.getElementById(galleryContainer); if (!galleryContainer || !data.generated_images) { console.error(Gallery container not found or no images data); return; } // Clear container galleryContainer.innerHTML ; // Randomly shuffle images array const shuffledImages shuffleArray(...data.generated_images); // Create element for each image shuffledImages.forEach((imageData, index) > { const imageItem createGalleryItem(imageData, index); galleryContainer.appendChild(imageItem); }); } catch (error) { console.error(Error loading gallery images:, error); // If loading fails, show error message const galleryContainer document.getElementById(galleryContainer); if (galleryContainer) { galleryContainer.innerHTML p classtext-gray-400 text-center col-span-full>Falha ao carregar imagens da galeria/p>; } }}function createGalleryItem(imageData, index) { // Create main container const itemDiv document.createElement(div); itemDiv.className break-inside-avoid mb-4 cursor-pointer transition-transform hover:scale-1.02 gallery-item; // Create image container const imageContainer document.createElement(div); imageContainer.className relative overflow-hidden rounded-lg group; // Create image element const img document.createElement(img); img.src imageData.image_path; img.alt `AI Generated Image ${imageData.id}`; img.className w-full h-auto hover:scale-105 transition-transform duration-300; img.loading lazy; img.style.aspectRatio auto; // Create Clone button container const cloneOverlay document.createElement(div); cloneOverlay.className absolute inset-0 bg-black/60 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300; // Create Clone button const cloneButton document.createElement(button); cloneButton.className bg-primary hover:bg-primary/80 text-white font-semibold py-2 px-6 rounded-lg transition-all transform translate-y-2 group-hover:translate-y-0; cloneButton.innerHTML i classfas fa-clone mr-2>/i>Clonar; // Add Clone button click event cloneButton.addEventListener(click, function(e) { e.stopPropagation(); clonePrompt(imageData.prompt); }); // Assemble elements cloneOverlay.appendChild(cloneButton); imageContainer.appendChild(img); imageContainer.appendChild(cloneOverlay); itemDiv.appendChild(imageContainer); return itemDiv;}function clonePrompt(prompt) { const heroPromptInput document.getElementById(heroPromptInput); const featureBadges document.getElementById(featureBadges); if (heroPromptInput) { // Fill prompt into textarea heroPromptInput.value prompt; // Scroll to feature badges position if (featureBadges) { featureBadges.scrollIntoView({ behavior: smooth, block: start, inline: nearest }); } else { // Try scrolling to generator area instead if (heroPromptInput.offsetParent) { heroPromptInput.offsetParent.scrollIntoView({ behavior: smooth, block: center }); } else { // Final fallback - scroll to a calculated position const heroSection document.querySelector(.gradient-bg); if (heroSection) { const rect heroSection.getBoundingClientRect(); const scrollTop window.pageYOffset + rect.top + (rect.height * 0.4); window.scrollTo({ top: scrollTop, behavior: smooth }); } } } // Focus on textarea setTimeout(() > { heroPromptInput.focus(); // Move cursor to end of text heroPromptInput.setSelectionRange(heroPromptInput.value.length, heroPromptInput.value.length); }, 800); }}// Fisher-Yates shuffle algorithm - randomly shuffle arrayfunction shuffleArray(array) { const shuffled ...array; // Create array copy to avoid modifying original for (let i shuffled.length - 1; i > 0; i--) { // Generate random index between 0 and i const j Math.floor(Math.random() * (i + 1)); // Swap elements shuffledi, shuffledj shuffledj, shuffledi; } return shuffled;}// Create generation placeholderfunction createGenerationPlaceholder(generationId, prompt) { const resultsContainer document.getElementById(resultsContainer); const generationResults document.getElementById(generationResults); if (!resultsContainer || !generationResults) { console.error(Results container not found); return; } // Show results area generationResults.classList.remove(hidden); // Create placeholder element const placeholderDiv document.createElement(div); placeholderDiv.id generationId; placeholderDiv.className bg-gray-800/50 rounded-xl overflow-hidden border border-gray-700/50 transition-all duration-300 hover:scale-105; placeholderDiv.innerHTML ` div classaspect-3/4 bg-gray-700/50 flex flex-col items-center justify-center relative> !-- Loading animation --> div classloading-spinner mb-4> div classrelative> div classw-16 h-16 border-4 border-gray-600 border-t-primary rounded-full animate-spin>/div> div classabsolute inset-0 flex items-center justify-center> i classfas fa-magic text-primary text-xl>/i> /div> /div> /div> !-- Status text --> div classtext-center px-4> p classtext-white font-medium mb-2>Gerando.../p> p classtext-gray-400 text-sm>Creating your AI masterpiece/p> /div> !-- Progress bar --> div classabsolute bottom-4 left-4 right-4> div classw-full bg-gray-600 rounded-full h-2> div classbg-primary h-2 rounded-full progress-bar stylewidth: 0%; animation: progress 3s ease-in-out infinite;>/div> /div> /div> /div> !-- Prompt display --> div classp-4 bg-gray-800/70> p classtext-gray-300 text-sm truncate cursor-pointer hover:text-white transition-colors title${prompt} onclickcopyPromptText(${prompt.replace(//g, \\)})> i classfas fa-quote-left mr-1 text-gray-500>/i> ${prompt} /p> div classflex justify-between items-center mt-2> span classtext-xs text-gray-500>${new Date().toLocaleTimeString()}/span> span classstatus-badge bg-orange-500/20 text-orange-400 px-2 py-1 rounded text-xs> i classfas fa-clock mr-1>/i>Gerando /span> /div> /div> `; // Insert new placeholder at the front of container resultsContainer.insertBefore(placeholderDiv, resultsContainer.firstChild); // Scroll to results area setTimeout(() > { generationResults.scrollIntoView({ behavior: smooth, block: start }); }, 100);}// Update generation resultfunction updateGenerationResult(generationId, imageUrl, status, errorMessage null) { const placeholder document.getElementById(generationId); if (!placeholder) { console.error(Placeholder not found:, generationId); return; } const prompt placeholder.querySelector(.truncate).textContent.replace(//g, ).trim(); if (status success && imageUrl) { // Generation successful, show image placeholder.innerHTML ` div classaspect-3/4 relative overflow-hidden group bg-gray-800/50 onclicktoggleImageActions(this)> !-- Blurred background --> div classabsolute inset-0 bg-cover bg-center filter blur-lg scale-110 opacity-40 stylebackground-image: url(${imageUrl});>/div> !-- Gradient overlay --> div classabsolute inset-0 bg-gradient-to-t from-black/30 via-transparent to-black/30>/div> !-- Foreground image --> div classabsolute inset-0 flex items-center justify-center> img src${imageUrl} altAI Generated Image classmax-w-full max-h-full object-contain transition-transform duration-300 group-hover:scale-105 drop-shadow-lg styleopacity: 0; transition: opacity 0.5s ease; onloadthis.style.opacity 1; this.classList.add(loaded);> /div> !-- Action buttons - Click to show on mobile, hover on desktop --> div classimage-actions absolute inset-0 bg-black/60 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 hidden md:flex> div classflex flex-col gap-2 onclickevent.stopPropagation()> button onclickenlargeImage(${imageUrl}) classbg-purple-500 hover:bg-purple-600 text-white py-2 px-4 md:py-2 md:px-4 text-sm md:text-base rounded-lg transition-all touch-manipulation> i classfas fa-search-plus mr-1>/i> span classinline>Ampliar/span> /button> button onclickdownloadImage(${imageUrl}) classbg-blue-500 hover:bg-blue-600 text-white py-2 px-4 md:py-2 md:px-4 text-sm md:text-base rounded-lg transition-all touch-manipulation> i classfas fa-download mr-1>/i> span classinline>Baixar/span> /button> /div> /div> /div> !-- Prompt and status --> div classp-4 bg-gray-800/70> p classtext-gray-300 text-sm truncate cursor-pointer hover:text-white transition-colors title${prompt} onclickcopyPromptText(${prompt.replace(//g, \\)})> i classfas fa-quote-left mr-1 text-gray-500>/i> ${prompt} /p> div classflex justify-between items-center mt-2> span classtext-xs text-gray-500>${new Date().toLocaleTimeString()}/span> span classstatus-badge bg-green-500/20 text-green-400 px-2 py-1 rounded text-xs> i classfas fa-check mr-1>/i>Concluído /span> /div> /div> `; } else { // Generation failed const displayErrorMessage errorMessage || Generation failed, please try again later; placeholder.innerHTML ` div classaspect-3/4 bg-gray-700/50 flex flex-col items-center justify-center> div classtext-red-400 text-4xl mb-4> i classfas fa-exclamation-triangle>/i> /div> p classtext-red-400 font-medium mb-2>Falha na Geração/p> p classtext-gray-400 text-sm text-center px-4>${displayErrorMessage}/p> /div> div classp-4 bg-gray-800/70> p classtext-gray-300 text-sm truncate cursor-pointer hover:text-white transition-colors title${prompt} onclickcopyPromptText(${prompt.replace(//g, \\)})> i classfas fa-quote-left mr-1 text-gray-500>/i> ${prompt} /p> div classflex justify-between items-center mt-2> span classtext-xs text-gray-500>${new Date().toLocaleTimeString()}/span> span classstatus-badge bg-red-500/20 text-red-400 px-2 py-1 rounded text-xs> i classfas fa-times mr-1>/i>Falhou /span> /div> /div> `; }}// Call generator-api.php to generate imageasync function callGeneratorAPI(prompt) { const formData new FormData(); formData.append(action, generate); formData.append(Prompt, prompt); formData.append(Count, 1); const response await fetch(/api/generator-api.php, { method: POST, body: formData, credentials: same-origin }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json();}// Get generation resultasync function getGenerationResult(taskId) { const formData new FormData(); formData.append(action, get_result); formData.append(TaskID, taskId); const response await fetch(/api/generator-api.php, { method: POST, body: formData, credentials: same-origin }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json();}// Poll generation resultasync function pollGenerationResult(taskId, generationId, maxAttempts 60) { let attempts 0; // Dynamic polling interval: first 5 times every 2 seconds, then every 5 seconds const getInterval (attemptCount) > { return attemptCount 5 ? 2000 : 5000; }; const poll async () > { try { attempts++; console.log(`Polling attempt ${attempts}, Task ID: ${taskId}`); const result await getGenerationResult(taskId); if (result.success && result.status success && result.images && result.images.length > 0) { // Generation successful const imageUrl result.images0.temp_path; console.log(Generation successful, Image URL:, imageUrl); updateGenerationResult(generationId, imageUrl, success); return; } else if (result.success && result.status processing) { // Still processing, continue polling if (attempts maxAttempts) { const nextInterval getInterval(attempts); console.log(`Continue polling, next check interval: ${nextInterval}ms`); setTimeout(poll, nextInterval); } else { // Timeout console.log(Polling timeout); updateGenerationResult(generationId, null, error, Generation timeout, please try again later); } } else { // Generation failed console.log(Generation failed:, result.message); updateGenerationResult(generationId, null, error, result.message || Generation failed); } } catch (error) { console.error(Polling error:, error); if (attempts 3) { // Network error retry max 3 times, use shorter interval setTimeout(poll, 3000); } else { updateGenerationResult(generationId, null, error, Network error, please check connection); } } }; // Start first check immediately, then poll at intervals setTimeout(poll, 2000);}// Scroll to top of pagefunction scrollToTop() { const target document.getElementById(featureBadges); if (target && typeof target.scrollIntoView function) { target.scrollIntoView({ behavior: smooth, block: start }); } else { window.scrollTo({ top: 0, behavior: smooth }); }}// Mobile image actions togglefunction toggleImageActions(imageContainer) { // Only work on mobile/touch devices (desktop uses hover) if (window.innerWidth > 768) return; // md breakpoint const actions imageContainer.querySelector(.image-actions); if (!actions) return; // Check if currently visible const isHidden actions.classList.contains(hidden); // Hide all other image actions first hideAllImageActions(); // Toggle current one if (isHidden) { // Show with animation actions.classList.remove(hidden); // Force reflow for animation actions.offsetHeight; actions.classList.remove(opacity-0); actions.classList.add(opacity-100); // Auto-hide after 3 seconds setTimeout(() > { if (!actions.classList.contains(hidden)) { hideImageActions(actions); } }, 5000); } else { // Hide with animation hideImageActions(actions); }}// Hide image actions with animationfunction hideImageActions(actions) { actions.classList.remove(opacity-100); actions.classList.add(opacity-0); // Hide element after animation completes setTimeout(() > { actions.classList.add(hidden); }, 300);}// Hide all image actionsfunction hideAllImageActions() { document.querySelectorAll(.image-actions).forEach(action > { if (window.innerWidth 768) { // Mobile: use hidden class if (!action.classList.contains(hidden)) { hideImageActions(action); } } else { // Desktop: use opacity only action.classList.remove(opacity-100); action.classList.add(opacity-0); } });}// Hide image actions when clicking elsewheredocument.addEventListener(click, function(e) { // Only on mobile if (window.innerWidth > 768) return; // Dont hide if clicking on image container or actions if (e.target.closest(.group) || e.target.closest(.image-actions)) return; // Hide all visible actions hideAllImageActions();});// Image enlarge modal is now fully handled by app.js/script> /main> !-- Footer --> !-- Footer -->footer classbg-black py-12 border-t border-gray-800> div classcontainer mx-auto px-4> div classflex flex-col md:flex-row justify-between> !-- Logo e informações --> div classmb-8 md:mb-0 md:w-1/3> div classmb-4> img src/assets/images/logo-pornmaker.svg altLogo classh-8> /div> p classtext-gray-400 text-sm mb-4 leading-relaxed> A melhor plataforma gratuita de Gerador de Pornô por IA, movida por tecnologia avançada de inteligência artificial. Crie conteúdos adultos impressionantes gerados por IA, imagens XXX e hentai com algoritmos de ponta projetados para geração de conteúdo adulto. /p> div classflex space-x-4> a hrefhttps://x.com/pornmaker_org classtext-gray-400 hover:text-white transition-colors aria-labelSiga o Gerador de Pornô por IA no Twitter> i classfab fa-twitter>/i> /a> a hrefhttps://t.me/pornmakerorg classtext-gray-400 hover:text-white transition-colors aria-labelSiga o Gerador de Pornô por IA no Telegram> i classfab fa-telegram>/i> /a> /div> /div> !-- Links do rodapé --> div classgrid grid-cols-2 gap-8> div> h3 classtext-white font-semibold mb-4>Produto/h3> ul classspace-y-2> li>a href/#generateNow classtext-gray-400 hover:text-white text-sm transition-colors>Gerador de IA/a>/li> li>a href/#howItWorks classtext-gray-400 hover:text-white text-sm transition-colors>Como Funciona/a>/li> li>a href/#pricing classtext-gray-400 hover:text-white text-sm transition-colors>Preços/a>/li> li>a href/blogs classtext-gray-400 hover:text-white text-sm transition-colors>Blogs/a>/li> /ul> /div> div> h3 classtext-white font-semibold mb-4>Jurídico/h3> ul classspace-y-2> li>a href/privacy classtext-gray-400 hover:text-white text-sm transition-colors>Política de Privacidade/a>/li> li>a href/terms classtext-gray-400 hover:text-white text-sm transition-colors>Termos de Serviço/a>/li> li>a href/help classtext-gray-400 hover:text-white text-sm transition-colors>Central de Ajuda/a>/li> li>a href/free-credits classtext-gray-400 hover:text-white text-sm transition-colors>Créditos Grátis/a>/li> /ul> /div> /div> /div> div classborder-t border-gray-800 mt-12 pt-8> div classtext-center> p classtext-gray-500 text-sm mb-4>© 2025 Gerador de Pornô por IA. Todos os direitos reservados./p> p classtext-gray-600 text-xs> O Gerador de Pornô por IA utiliza inteligência artificial para criar obras digitais adultas. Todas as imagens geradas são apenas para adultos (18+) e uso pessoal. Use com responsabilidade e de acordo com nossos termos de serviço e as leis aplicáveis. /p> /div> /div> /div>/footer> !-- Google tag (gtag.js) -->script async srchttps://www.googletagmanager.com/gtag/js?idG-979D8FDPDM>/script>script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-979D8FDPDM);/script> !-- Flash Message - Bottom Banner --> script> document.addEventListener(DOMContentLoaded, function() { const message document.getElementById(message); if (message) { // Auto-hide after 5 seconds setTimeout(() > { message.style.opacity 0; message.style.transform translateY(100%); // Slide down for bottom position setTimeout(() > { if (message.parentElement) { message.remove(); } }, 300); }, 5000); } }); /script> script src/assets/js/app.js>/script> script> if (window.initInviteToast) { window.initInviteToast(); } /script>/body>/html>
Port 443
HTTP/1.1 200 OKDate: Fri, 27 Feb 2026 06:04:52 GMTContent-Type: text/html; charsetUTF-8Transfer-Encoding: chunkedConnection: keep-aliveServer: cloudflarevary: Accept-EncodingSet-Cookie: PHPSESSID4kn8r4boornitno9ch0r6ept8c; path/expires: Thu, 19 Nov 1981 08:52:00 GMTCache-Control: no-store, no-cache, must-revalidatepragma: no-cachestrict-transport-security: max-age31536000alt-svc: h3:443; ma86400Report-To: {group:cf-nel,max_age:604800,endpoints:{url:https://a.nel.cloudflare.com/report/v4?sjO22ocDtdy6taeNXg63tRbOGBUHczGtpRS%2Fi%2BQU3b19Y7BOQfxVyfiIMt%2B5nq8UC%2BhlA9uXD7ANQtIczN2rSH5wtEL04JWsIdH%2BDdf%2BZ}}cf-cache-status: DYNAMICNel: {report_to:cf-nel,success_fraction:0.0,max_age:604800}CF-RAY: 9d457cb85998ff1a-PDX !DOCTYPE html>html langpt-BR>head> meta charsetUTF-8> meta nameviewport contentwidthdevice-width, initial-scale1.0> title>PornMaker - Crie Imagens Pornô com IA Gratuitamente | Gerador de Fotos por IA Profissional/title> meta namedescription contentTransforme fotos em imagens pornô impressionantes com nosso PornMaker avançado. Crie fotos de qualidade profissional em segundos. Gratuito para testar, com saída em alta resolução para redes sociais e uso comercial.> link relcanonical hrefhttps://br.pornmaker.org> link relicon typeimage/png href/favicon-96x96.png sizes96x96 /> link relicon typeimage/svg+xml href/favicon.svg /> link relshortcut icon href/favicon.ico /> link relapple-touch-icon sizes180x180 href/apple-touch-icon.png /> link relmanifest href/site.webmanifest /> script srchttps://cdn.tailwindcss.com>/script> link relstylesheet hrefhttps://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css> link hrefhttps://fonts.googleapis.com/css2?familyInter:wght@300;400;500;600;700&displayswap relstylesheet> !-- Image Compare Viewer --> link relstylesheet hrefhttps://unpkg.com/image-compare-viewer/dist/image-compare-viewer.min.css> script srchttps://unpkg.com/image-compare-viewer/dist/image-compare-viewer.min.js>/script> link relstylesheet href/assets/css/style.css> script src/assets/js/tailwind-config.js>/script> /head>body classbg-black text-white font-sans> !-- Navigation --> !-- Navigation -->nav idnavbar classnavbar py-4 md:py-12 px-4 md:px-8> div classcontainer mx-auto flex justify-between items-center> !-- Left: Logo --> div classflex-shrink-0> a href/ classflex items-center> img src/assets/images/logo-pornmaker.svg altLogo da Pornmaker classh-8 w-auto> /a> /div> !-- Center: Menu (Desktop only) --> div classhidden lg:flex flex-1 justify-center items-center space-x-12> a href/ classtext-base lg:text-lg transition-colors whitespace-nowrap text-primary font-semibold>Gerador de Pornô por IA/a> a href/deepfake classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary relative> Deepfake span classabsolute -top-2 -right-8 bg-gradient-to-r from-pink-500 to-red-500 text-white text-xs font-bold px-2 py-1 rounded-full transform scale-75 shadow-lg>HOT/span> /a> a href/image-undress classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Despir por IA/a> a href/swap-face classhidden text-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Swap Face/a> a href/bikini classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Biquíni/a> a href/pricing classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary>Preços/a> a href/free-credits classtext-base lg:text-lg transition-colors whitespace-nowrap text-white hover:text-primary relative> i classfas fa-gift text-pink-400 text-lg transform scale-90 drop-shadow aria-hiddentrue>/i> Créditos Grátis /a> /div> !-- Credits Display --> div classflex items-center bg-gray-800/50 backdrop-blur-sm rounded-full mr-4 px-3 py-2 border-2 border-yellow-400> i classfas fa-coins text-yellow-400 mr-1 sm:mr-2 text-sm>/i> span classtext-yellow-400 font-medium>14/span> span classtext-xs hidden sm:inline ml-1>créditos grátis/span> /div> !-- Mobile Menu Button --> div classlg:hidden> button idmobileMenuBtn classtext-white hover:text-primary transition-colors> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM4 6h16M4 12h16M4 18h16>/path> /svg> /button> /div> !-- Right: User/Login Section --> div classflex-shrink-0 hidden lg:flex items-center space-x-4> !-- Not logged in --> a href/login classblock w-full text-center bg-primary hover:bg-primary-dark text-white font-medium py-3 px-6 rounded-lg transition-all sexy-gradient hover:opacity-90 rounded-xl transition-all breathing-button shadow-lg rounded-full> Entrar /a> /div> /div> !-- Mobile Menu --> div idmobileMenu classlg:hidden fixed top-0 left-0 min-h-screen w-full h-full bg-black/90 backdrop-blur-md z-50 hidden> div classflex flex-col h-full> !-- Mobile Menu Header --> div classflex justify-between items-center p-4 py-5 border-b border-gray-700> img src/assets/images/logo-pornmaker.svg altLogo da Pornmaker classh-8 w-auto> button idcloseMobileMenu classtext-white hover:text-primary transition-colors> svg classw-6 h-6 fillnone strokecurrentColor viewBox0 0 24 24> path stroke-linecapround stroke-linejoinround stroke-width2 dM6 18L18 6M6 6l12 12>/path> /svg> /button> /div> !-- Mobile Menu Items --> div classflex-1 flex flex-col py-8 px-4 space-y-2> a href/ classtext-lg transition-colors text-primary font-semibold py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Gerador de Pornô por IA/a> a href/deepfake classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200 relative> Deepfake span classabsolute right-1 bg-gradient-to-r from-pink-500 to-red-500 text-white text-xs font-bold px-2 py-1 rounded-full transform scale-75 shadow-lg>HOT/span> /a> a href/image-undress classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Despir por IA/a> a href/swap-face classhidden text-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Trocar Rosto/a> a href/bikini classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Biquíni/a> a href/pricing classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200>Preços/a> a href/free-credits classtext-lg transition-colors text-white hover:text-primary py-4 px-3 rounded-lg hover:bg-gray-800/50 transition-all duration-200 relative> i classfas fa-gift w-4 mr-3 text-pink-400>/i>Créditos Grátis /a> /div> !-- Mobile Menu Footer --> div classborder-t border-gray-700> a href/login classblock w-full text-center bg-primary hover:bg-primary-dark text-white font-medium py-3 px-6 rounded-lg transition-all sexy-gradient hover:opacity-90 rounded-xl transition-all breathing-button shadow-lg> Entrar /a> /div> /div> /div>/nav>script>// Mobile menu functionalityconst mobileMenuBtn document.getElementById(mobileMenuBtn);const mobileMenu document.getElementById(mobileMenu);const closeMobileMenu document.getElementById(closeMobileMenu);if (mobileMenuBtn && mobileMenu && closeMobileMenu) { // Open mobile menu mobileMenuBtn.addEventListener(click, function() { mobileMenu.classList.remove(hidden); document.body.style.overflow hidden; // Prevent background scroll }); // Close mobile menu function closeMobileMenuFunc() { mobileMenu.classList.add(hidden); document.body.style.overflow ; // Restore scroll } closeMobileMenu.addEventListener(click, closeMobileMenuFunc); // Close mobile menu when clicking on backdrop mobileMenu.addEventListener(click, function(e) { if (e.target mobileMenu) { closeMobileMenuFunc(); } }); // Close mobile menu on escape key document.addEventListener(keydown, function(e) { if (e.key Escape && !mobileMenu.classList.contains(hidden)) { closeMobileMenuFunc(); } });}// Toggle user menufunction toggleUserMenu() { const userMenu document.getElementById(user-menu); if (userMenu) { userMenu.classList.toggle(hidden); }}// Close dropdowns when clicking outsidedocument.addEventListener(click, function(event) { const userMenu document.getElementById(user-menu); const userButton document.querySelector(onclicktoggleUserMenu()); // Close user menu if clicking outside if (userMenu && !userMenu.contains(event.target) && !userButton.contains(event.target)) { userMenu.classList.add(hidden); }});/script> main> !-- Age Verification Modal -->div idageVerificationModal classfixed inset-0 z-50 flex items-center justify-center bg-black/20 backdrop-blur-md hidden> div classbg-gray-900 border border-gray-700 rounded-2xl p-8 max-w-md mx-4 shadow-2xl> div classtext-center> !-- RTA Icon --> div classmx-auto mb-4 w-16 h-16 flex items-center justify-center> img src/assets/images/rta-white.svg altRTA - Restricted to Adults classw-full h-full object-contain /> /div> !-- Content --> div classtext-gray-300 text-sm leading-relaxed mb-6 space-y-3> p>Aviso! Este site é apenas para adultos. Contém imagens adultas geradas por IA./p> p>Ao entrar neste site, reconheço que tenho 18 anos ou mais. Qualquer conteúdo gerado que se assemelhe a pessoas reais é puramente coincidência./p> /div> !-- Buttons --> div classflex space-x-3> button iddeclineBtn classflex-1 bg-gray-700 hover:bg-gray-600 text-white font-medium py-3 px-4 rounded-lg transition-all> Recusar /button> button idacceptBtn classflex-1 sexy-gradient hover:opacity-90 text-white font-medium py-3 px-4 rounded-lg transition-all> Aceitar /button> /div> /div> /div>/div>!-- Auth Modal will be inserted here by auth-modal.js -->!-- Hero Section with Integrated Generator -->section classgradient-bg min-h-screen flex flex-col justify-center pt-32 md:pt-44 pb-16> div classcontainer mx-auto px-4> !-- Hero Title & Description --> div classtext-center mb-12> h1 classtext-6xl font-bold mb-6> span classtext-sexy-gradient>Gerador de Pornô por IA/span> /h1> p classtext-2xl text-gray-300 mb-4> Crie conteúdo adulto impressionante gerado por IA em segundos /p> p classtext-lg text-gray-400 max-w-3xl mx-auto mb-8> O melhor Gerador de Pornô por IA gratuito. Crie suas próprias imagens sexys e XXX geradas por IA, incluindo hentai, com alguns cliques ou poucos prompts. /p> !-- Feature badges --> div idfeatureBadges classflex flex-wrap justify-center gap-4 mb-8> span classbg-gray-800/50 backdrop-blur-sm text-secondary px-4 py-2 rounded-full text-sm font-medium border border-secondary/20>Qualidade HD/span> span classbg-gray-800/50 backdrop-blur-sm text-primary px-4 py-2 rounded-full text-sm font-medium border border-primary/20>Login Rápido/span> span classbg-gray-800/50 backdrop-blur-sm text-accent px-4 py-2 rounded-full text-sm font-medium border border-accent/20>Gerações Ilimitadas/span> span classbg-gray-800/50 backdrop-blur-sm text-secondary px-4 py-2 rounded-full text-sm font-medium border border-secondary/20>Alta Qualidade/span> /div> /div> !-- Integrated AI Generator --> div classmax-w-6xl mx-auto> div classbg-gray-900/80 backdrop-blur-sm rounded-2xl p-4 lg:p-6 border border-gray-700/50 hover:border-primary shadow-2xl> !-- Generator Interface --> div classmb-6> label classblock text-white text-lg font-medium mb-3>Prompt de Descrição/label> textarea idheroPromptInput rows4 placeholderO que você quer ver? classw-full p-4 bg-gray-800/70 text-white text-lg rounded-xl border-2 border-gray-600/50 focus:border-primary focus:outline-none resize-none backdrop-blur-sm transition-all duration-300 min-h-280px sm:min-h-140px >/textarea> /div> !-- Settings and Controls Container --> div classflex flex-col lg:flex-row lg:justify-between lg:items-center gap-6 mb-6> !-- Generation Settings --> div classflex flex-wrap lg:justify-start gap-3 md:gap-6> !-- Fastest Speed --> div classflex items-center space-x-2> label classinline-flex items-center cursor-pointer> input typecheckbox idfastest-speed classsr-only peer checked> div classrelative w-11 h-6 bg-gray-600 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content- after:absolute after:top-2px after:left-2px after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-orange-500>/div> /label> span classtext-white text-sm font-medium whitespace-nowrap>Velocidade máxima/span> /div> !-- High Quality --> div classflex items-center space-x-2> label classinline-flex items-center cursor-pointer> input typecheckbox idhigh-quality classsr-only peer> div classrelative w-11 h-6 bg-gray-600 peer-focus:outline-none rounded-full peer peer-checked:after:translate-x-full peer-checked:after:border-white after:content- after:absolute after:top-2px after:left-2px after:bg-white after:rounded-full after:h-5 after:w-5 after:transition-all peer-checked:bg-orange-500>/div> /label> span classtext-white text-sm font-medium whitespace-nowrap>Alta Qualidade/span> /div> /div> !-- Action Buttons --> div classflex flex-col sm:flex-row gap-4 justify-center lg:justify-end items-center> button idheroRandomBtn classw-full sm:w-auto bg-primary/50 hover:bg-primary/70 text-white font-medium py-3 px-6 rounded-xl transition-all backdrop-blur-sm border-2 border-primary> i classfas fa-dice mr-2>/i> Aleatório /button> button idheroGenerateBtn classw-full sm:w-auto sexy-gradient hover:opacity-90 text-white font-semibold py-4 px-12 rounded-xl transition-all breathing-button shadow-lg> i classfas fa-magic mr-2>/i> Gerar /button> /div> /div> /div> /div> !-- Generation Results --> div idgenerationResults classmax-w-6xl mx-auto mt-8 hidden> div classbg-gray-900/60 backdrop-blur-sm rounded-2xl p-6 border border-gray-700/30> h3 classtext-2xl font-bold text-white mb-4 text-center> i classfas fa-images mr-2 text-primary>/i> Resultados da Geração /h3> div classtext-center mb-6> p classtext-sm text-yellow-400 bg-yellow-500/10 border border-yellow-500/20 rounded-lg px-4 py-2 inline-block> i classfas fa-shield-alt mr-2>/i> strong>Não se esqueça de baixar seus arquivos./strong> Para maior privacidade, as imagens geradas nunca são armazenadas em nossos servidores. /p> /div> div idresultsContainer classgrid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6> !-- Generation results will be dynamically inserted here --> /div> /div> /div> /div>/section>!-- Get Inspired Section -->section classbg-gray-900 py-16> div classcontainer mx-auto px-4> h2 classtext-4xl font-bold text-center mb-4>Inspire-se/h2> p classtext-gray-400 text-center mb-12 max-w-2xl mx-auto> Inspire-se com os exemplos do nosso gerador por IA /p> !-- Example Gallery --> div idgalleryContainer classmax-w-6xl mx-auto columns-2 md:columns-3 lg:columns-4 gap-4 space-y-4> !-- Dynamic waterfall content will be generated here --> /div> /div>/section>!-- Key Features Section -->section classbg-black py-16> div classcontainer mx-auto px-4> h2 classtext-4xl font-bold text-center mb-4>Principais Recursos do Gerador de Pornô por IA/h2> p classtext-gray-400 text-center max-w-3xl mx-auto mb-16> Experimente a próxima geração de criação de conteúdo adulto por IA — poderosa, gratuita e com foco em privacidade. /p> div classgrid md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-6xl mx-auto> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>🆓/div> h3 classtext-xl font-bold mb-4 text-white>Criação Sem Custo/h3> p classtext-gray-400> O primeiro gerador de pornô por IA totalmente gratuito, sem limites de uso ou necessidade de cadastro. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>⭐/div> h3 classtext-xl font-bold mb-4 text-white>Qualidade de Última Geração/h3> p classtext-gray-400> Modelos avançados de IA, gerando imagens adultas fotorrealistas com detalhes excepcionais e controle de estilo. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>📝/div> h3 classtext-xl font-bold mb-4 text-white>Compreensão Avançada de Texto/h3> p classtext-gray-400> Capacidade superior de texto para imagem com interpretação precisa de prompts complexos. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>⚡/div> h3 classtext-xl font-bold mb-4 text-white>Geração Ultrarrápida/h3> p classtext-gray-400> Pipeline otimizado que garante geração rápida sem comprometer a qualidade. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>🔒/div> h3 classtext-xl font-bold mb-4 text-white>Privacidade Aprimorada/h3> p classtext-gray-400> Política de não retenção de dados – seus prompts e imagens geradas nunca são armazenados. /p> /div> div classbg-gray-900 rounded-xl p-8 text-center border border-gray-800> div classtext-primary text-4xl mb-6>🎨/div> h3 classtext-xl font-bold mb-4 text-white>Suporte a Múltiplos Estilos/h3> p classtext-gray-400> Crie imagens em vários estilos artísticos, do fotorrealismo ao anime, artístico ao fantasia. /p> /div> /div> /div>/section>section classbg-gradient-to-r from-primary/10 to-secondary/10 py-24> !-- Statistics Section --> div classtext-center max-w-6xl mx-auto> h2 classtext-2xl font-bold mb-10 text-white>Confiado por Milhões/h2> div classgrid grid-cols-2 md:grid-cols-4 gap-8> div> div classtext-4xl font-bold text-primary mb-2>3M+/div> div classtext-gray-400>Usuários Ativos Mensais/div> /div> div> div classtext-4xl font-bold text-primary mb-2>1,530/div> div classtext-gray-400>Imagens por Minuto/div> /div> div> div classtext-4xl font-bold text-primary mb-2>4.9/div> div classtext-gray-400>Índice de Qualidade/div> /div> div> div classtext-4xl font-bold text-primary mb-2>24/7/div> div classtext-gray-400>Disponível/div> /div> /div> /div>/section>!-- FAQ Section -->section classbg-black py-16> div classcontainer mx-auto px-4> h2 classtext-4xl font-bold text-center mb-4>Perguntas Frequentes/h2> p classtext-gray-400 text-center mb-12 max-w-2xl mx-auto> Tem mais perguntas? Fale conosco em a href/cdn-cgi/l/email-protection class__cf_email__ data-cfemaild9aaaca9a9b6abad99a9b6abb7b4b8b2bcabf7b6abbe>email protected/a> /p> div classmax-w-3xl mx-auto> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>O que é o Gerador de Pornô por IA e como funciona?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker é o primeiro gerador de imagens adultas por IA totalmente gratuito e ilimitado. Ele permite criar conteúdo adulto de alta qualidade a partir de descrições em texto, sem cadastro e sem limites de uso. Basta descrever o que deseja criar e nossa IA avançada gerará imagens fotorrealistas em segundos./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>O Gerador de Pornô por IA é realmente gratuito?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Sim, o PornMaker é totalmente gratuito! Nosso compromisso é ser a maior e mais poderosa plataforma gratuita de geração de imagens adultas por IA. Não há tarifas ocultas, não precisa de cartão e não há limites de uso. Você pode gerar conteúdo ilimitado sem restrições./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Quais estilos de moda praia posso gerar com o PornMaker?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker oferece uma ampla variedade de estilos de moda praia para todos os gostos. É possível gerar biquínis triangulares clássicos, tomara que caia, cintura alta retrô, esportivos, maiôs elegantes, recortes modernos, fio dental e looks de designers. A plataforma também suporta várias cores, padrões, texturas e detalhes como babados, estampas e acabamentos metálicos. Descreva o estilo desejado e o PornMaker criará resultados personalizados./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Quão realistas são as imagens geradas pelo PornMaker?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker produz imagens extremamente realistas, com qualidade de estúdio que rivaliza com fotografia profissional. As redes neurais avançadas são treinadas com milhões de imagens em alta resolução, permitindo entender iluminação, texturas de tecidos, proporções corporais e poses naturais. As imagens geradas apresentam sombras, reflexos e comportamento do tecido com precisão, tornando-as quase indistinguíveis de fotos reais — ideal para marketing profissional, redes sociais e aplicações comerciais./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Posso usar comercialmente as imagens geradas por IA?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Sim. As imagens criadas com o PornMaker podem ser usadas comercialmente, incluindo campanhas de marketing, anúncios em redes sociais, sites, materiais impressos e catálogos. A saída em alta resolução é perfeita para uso profissional e você mantém a titularidade das imagens geradas. Consulte nossos Termos de Serviço para diretrizes específicas e possíveis restrições./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>As imagens são adequadas para redes sociais como Instagram?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Com certeza! As imagens do PornMaker são otimizadas para redes como Instagram, TikTok, Facebook, X (Twitter) e Pinterest. A alta qualidade atende aos padrões das plataformas, garantindo excelente potencial de engajamento. O PornMaker cria conteúdos visualmente atraentes que performam muito bem nas redes, ajudando influenciadores, marcas e criadores a ampliar presença com imagens que chamam atenção e geram interação./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Quanto tempo leva para gerar uma imagem?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker é otimizado para velocidade e eficiência. A maioria das imagens é gerada em 10–30 segundos, dependendo da complexidade do pedido e da carga do servidor. Infraestrutura de GPU e algoritmos otimizados garantem rapidez sem comprometer a qualidade. Diferente da fotografia tradicional, que exige horas de preparação e edição, o PornMaker entrega resultados profissionais quase instantaneamente — ideal para projetos urgentes e criação rápida de conteúdo./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Meus dados estão seguros ao usar o PornMaker?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Privacidade e segurança são prioridades no PornMaker. Todas as fotos enviadas são processadas por conexões criptografadas e nunca são armazenadas permanentemente em nossos servidores. O processamento ocorre em ambientes seguros e isolados, e as imagens são excluídas automaticamente após a geração. Estamos em conformidade com padrões internacionais de proteção de dados (incluindo GDPR), garantindo que suas informações e criações permaneçam privadas e seguras./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>Posso personalizar e editar as imagens geradas?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>Sim, você tem controle criativo total sobre as imagens geradas. A saída em alta resolução pode ser editada em qualquer software de edição; você pode adicionar marca d’água, logotipos ou elementos de branding. Como as imagens são suas, é livre para ajustar cores, iluminação, recortar composições ou combinar resultados para criar colagens únicas. O PornMaker oferece uma base excelente para aprimoramentos criativos e pós-produção profissional./p> /div> /div> div classfaq-item py-4> div classfaq-header flex justify-between items-center cursor-pointer> h3 classtext-white text-lg font-medium pr-4>O que torna o PornMaker diferente de outras ferramentas de imagem por IA?/h3> span classfaq-icon text-gray-400 text-xl font-light>+/span> /div> div classfaq-answer> p classtext-gray-500 leading-relaxed>O PornMaker se destaca pelo treinamento especializado em estética de moda e estilos visuais adultos. Diferente de geradores genéricos, nosso sistema entende princípios de design, comportamento de tecidos e tendências visuais. Os modelos são treinados com conjuntos curados, garantindo realismo, fidelidade de estilo e autenticidade. Além disso, a interface amigável torna a geração de imagens de qualidade profissional acessível a todos, independentemente de conhecimento técnico./p> /div> /div> /div> /div>/section>!-- CTA Section -->section classbg-gray-900 py-16> div classcontainer mx-auto px-4 text-center> h2 classtext-4xl font-bold mb-4>Pronto para Começar a Criar com o Gerador de Pornô por IA?/h2> p classtext-gray-400 mb-8 max-w-xl mx-auto> Join millions of creators who trust our AI Porn Generator for professional-quality adult content. Start creating stunning AI-generated images today! /p> button onclickscrollToTop() classsexy-gradient hover:opacity-90 text-white font-semibold py-4 px-12 rounded-full text-xl shadow-lg breathing-button> Começar Agora /button> div classmt-6 flex flex-wrap justify-center items-center gap-6 text-sm text-gray-400> span>✓ Ultra HD Quality/span> span>✓ Quick Registration/span> span>✓ Unlimited Generations/span> span>✓ Instant High-Quality Results/span> /div> /div>/section>style>/* Progress bar animation */@keyframes progress { 0% { width: 0%; } 50% { width: 70%; } 100% { width: 85%; }}/* Image loading animation */.loaded { opacity: 1 !important;}/* Status badge styles */.status-badge { border: 1px solid currentColor; border-opacity: 0.3;}/* Generation result card hover effects */.generation-card:hover { transform: translateY(-2px); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);}/* Loading spinner optimization */.loading-spinner { filter: drop-shadow(0 0 8px rgba(var(--tw-color-primary), 0.3));}/* Blur background effect optimization */.blur-background { backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); background: rgba(55, 65, 81, 0.1);}/* Image container optimization */.image-container { background: linear-gradient(135deg, rgba(17, 24, 39, 0.8), rgba(55, 65, 81, 0.6));}/* Modal styles moved to auth-modal.js *//* Input Error States - Glowing Animation */.input-error { border-color: #ef4444 !important; box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1), 0 0 20px rgba(239, 68, 68, 0.3) !important; animation: errorGlow 2s ease-in-out infinite;}@keyframes errorGlow { 0%, 100% { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.1), 0 0 20px rgba(239, 68, 68, 0.3); } 50% { box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.2), 0 0 30px rgba(239, 68, 68, 0.5); }}.input-error-shake { animation: errorShake 0.6s ease-in-out;}@keyframes errorShake { 0%, 20%, 40%, 60%, 80% { transform: translateX(-2px); } 10%, 30%, 50%, 70%, 90% { transform: translateX(2px); } 100% { transform: translateX(0); }}/style>!-- Load Auth Modal Module -->script data-cfasyncfalse src/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js>/script>script src/assets/js/auth-modal.js>/script>script>// Auth modal functionality is now handled by auth-modal.js// Show input error with glowing effectfunction showInputError(inputId) { const input document.getElementById(inputId); if (input) { // Add error classes with animation input.classList.add(input-error, input-error-shake); // Focus on input input.focus(); // Remove shake animation after it completes setTimeout(() > { input.classList.remove(input-error-shake); }, 600); // Auto-clear error after 4 seconds setTimeout(() > { clearInputError(inputId); }, 4000); }}// Clear input error statefunction clearInputError(inputId) { const input document.getElementById(inputId); if (input) { input.classList.remove(input-error, input-error-shake); }}// Initialize input error clearing functionalitydocument.addEventListener(DOMContentLoaded, function() { // Add input event listener to clear errors when user starts typing const heroPromptInput document.getElementById(heroPromptInput); if (heroPromptInput) { heroPromptInput.addEventListener(input, function() { clearInputError(heroPromptInput); }); // Also clear on focus heroPromptInput.addEventListener(focus, function() { clearInputError(heroPromptInput); }); }});// Copy prompt text functionalityfunction copyPromptText(prompt) { // Create a temporary textarea element to copy text const textarea document.createElement(textarea); textarea.value prompt; document.body.appendChild(textarea); textarea.select(); textarea.setSelectionRange(0, 99999); // For mobile devices try { document.execCommand(copy); // Show flash message (function defined in app.js) showFlashMessage(success, Prompt copiado para a área de transferência!); } catch (err) { console.error(Falha ao copiar prompt: , err); showFlashMessage(error, Falha ao copiar o prompt); } document.body.removeChild(textarea);}// Age Verification Modal functionalitydocument.addEventListener(DOMContentLoaded, function() { const modal document.getElementById(ageVerificationModal); const acceptBtn document.getElementById(acceptBtn); const declineBtn document.getElementById(declineBtn); // Check if age has been verified const hasVerified localStorage.getItem(ageVerified); if (hasVerified true) { // If verified, keep modal hidden modal.classList.add(hidden); } else { // If not verified, show modal modal.classList.remove(hidden); } // Accept button click event acceptBtn.addEventListener(click, function() { // Save verification status to local storage localStorage.setItem(ageVerified, true); // Hide modal modal.classList.add(hidden); }); // Decline button click event declineBtn.addEventListener(click, function() { // Redirect to other website or show prompt alert(You must be 18+ to access this website.); // Option to redirect to other website window.location.href https://www.pornmaker.org/; }); // Prevent clicking overlay to close modal modal.addEventListener(click, function(e) { if (e.target modal) { // Prevent default behavior, user must choose Accept or Decline e.preventDefault(); } });}); // Hero Generator functionality const heroPromptInput document.getElementById(heroPromptInput); const heroRandomBtn document.getElementById(heroRandomBtn); const heroGenerateBtn document.getElementById(heroGenerateBtn); // Global variable to store preloaded prompts let availablePrompts Two 20 year old girls having sex and taking a selfie together while climaxing, full body, nude, topless, creampie, cum covered, orgasm, happy, semen on face, semen in hair, semen in mouth, breast, lesbians, very pale skin, dark hair, messy, submissive, slut, cum slut, kneeling, fake cum, bukkake, semen all, over her body, wet squirting, dildo in pussy, wet pussy, cum on tits, cum in mouth, suggestive, aheago, chubby, huge breasts, facesitting, lezdom, wet, rain, nurse, hospital, semen, semen on tits, licking semen, 3 women, standing, bent over, (tall:1.3), (long legs:1.3), (lean legs:1.3), thigh gap, tight asses, asses visible, no panties, upskirt, high heels, full body view, ultra high image quality with clear, detailed perfect face, most gorgeous face, no makeup, very aesthetic, black haired twin tails, white teeth, closed eyes, embarrassed, orgasm, defined crisp glossy pink lips, cutest cutest sweetheart in universe, light fair skin, very hair fringe, extreme blush, arched back, super waist, perfect anatomical body, hipbone visible, snub upturned nose, extremely philtrum, extremely waist, kawii hips, shaved pussy, slippery shaved pussy, tight pussy, kawii poor chested, poor chested, androgynouschested, ecstasy, orgasm, legs like a model, bend and open wide legs, arms together, elongated erect nipples, puffy pointy nipples, detailed nipples, puffy areola, oiled skin, close up, top down, moan so loud, night, rim lighting, bed, pink kawii pink pajama almost taken off, kneeling, head tilted back ; // Preload prompts from generator.json async function preloadPrompts() { try { const response await fetch(/json/generator.json); const data await response.json(); if (data.generated_images && data.generated_images.length > 0) { // Extract all prompts from the data availablePrompts data.generated_images.map(item > item.prompt); console.log(`Loaded ${availablePrompts.length} prompts from generator.json`); } } catch (error) { console.error(Error preloading prompts:, error); // Keep fallback prompts } } // Preload prompts when page loads preloadPrompts(); // Random prompt button - Use preloaded prompts if (heroRandomBtn && heroPromptInput) { heroRandomBtn.addEventListener(click, function(e) { e.preventDefault(); if (availablePrompts.length > 0) { const randomIndex Math.floor(Math.random() * availablePrompts.length); const randomPrompt availablePromptsrandomIndex; heroPromptInput.value randomPrompt; } }); } // Generate button functionality - Integrated with generator-api.php if (heroGenerateBtn && heroPromptInput) { heroGenerateBtn.addEventListener(click, async function(e) { e.preventDefault(); // Check if user has sufficient credits (includes login check) - highest priority if (!(await authModal.requireCredits(10))) { return; // authModal will show appropriate modal if needed } // Then check if prompt is provided const prompt heroPromptInput.value.trim(); if (!prompt) { showInputError(heroPromptInput); return; } // Show loading state heroGenerateBtn.innerHTML i classfas fa-spinner fa-spin mr-2>/i>生成中...; heroGenerateBtn.disabled true; // Create and insert generation result placeholder const generationId gen_ + Date.now(); createGenerationPlaceholder(generationId, prompt); try { // Call generator-api.php to start generation const generateResponse await callGeneratorAPI(prompt); if (generateResponse.success && generateResponse.task_id) { // Start polling for results pollGenerationResult(generateResponse.task_id, generationId); } else { // Generation request failed updateGenerationResult(generationId, null, error, generateResponse.message || Falha na solicitação de geração); } } catch (error) { console.error(Generator API Error:, error); updateGenerationResult(generationId, null, error, Erro do sistema, contate o administrador); } finally { // Restore button state (allow multiple generations) setTimeout(() > { heroGenerateBtn.innerHTML i classfas fa-magic mr-2>/i>Generate; heroGenerateBtn.disabled false; }, 1000); } }); } // Enter key shortcut for generation if (heroPromptInput && heroGenerateBtn) { heroPromptInput.addEventListener(keypress, function(e) { if (e.key Enter && !e.shiftKey) { e.preventDefault(); heroGenerateBtn.click(); } }); }// FAQ functionalitydocument.addEventListener(DOMContentLoaded, function() { const faqItems document.querySelectorAll(.faq-item); faqItems.forEach(item > { const header item.querySelector(.faq-header); const answer item.querySelector(.faq-answer); const icon item.querySelector(.faq-icon); // Initially hide all answers answer.style.display none; header.addEventListener(click, function() { const isOpen answer.style.display block; // Close all other FAQ items faqItems.forEach(otherItem > { const otherAnswer otherItem.querySelector(.faq-answer); const otherIcon otherItem.querySelector(.faq-icon); otherAnswer.style.display none; otherIcon.textContent +; }); // Toggle current item if (!isOpen) { answer.style.display block; icon.textContent −; } }); });});// Gallery functionality - Load from generator.jsondocument.addEventListener(DOMContentLoaded, function() { loadGalleryImages();});async function loadGalleryImages() { try { const response await fetch(/json/generator.json); const data await response.json(); const galleryContainer document.getElementById(galleryContainer); if (!galleryContainer || !data.generated_images) { console.error(Gallery container not found or no images data); return; } // Clear container galleryContainer.innerHTML ; // Randomly shuffle images array const shuffledImages shuffleArray(...data.generated_images); // Create element for each image shuffledImages.forEach((imageData, index) > { const imageItem createGalleryItem(imageData, index); galleryContainer.appendChild(imageItem); }); } catch (error) { console.error(Error loading gallery images:, error); // If loading fails, show error message const galleryContainer document.getElementById(galleryContainer); if (galleryContainer) { galleryContainer.innerHTML p classtext-gray-400 text-center col-span-full>Falha ao carregar imagens da galeria/p>; } }}function createGalleryItem(imageData, index) { // Create main container const itemDiv document.createElement(div); itemDiv.className break-inside-avoid mb-4 cursor-pointer transition-transform hover:scale-1.02 gallery-item; // Create image container const imageContainer document.createElement(div); imageContainer.className relative overflow-hidden rounded-lg group; // Create image element const img document.createElement(img); img.src imageData.image_path; img.alt `AI Generated Image ${imageData.id}`; img.className w-full h-auto hover:scale-105 transition-transform duration-300; img.loading lazy; img.style.aspectRatio auto; // Create Clone button container const cloneOverlay document.createElement(div); cloneOverlay.className absolute inset-0 bg-black/60 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300; // Create Clone button const cloneButton document.createElement(button); cloneButton.className bg-primary hover:bg-primary/80 text-white font-semibold py-2 px-6 rounded-lg transition-all transform translate-y-2 group-hover:translate-y-0; cloneButton.innerHTML i classfas fa-clone mr-2>/i>Clonar; // Add Clone button click event cloneButton.addEventListener(click, function(e) { e.stopPropagation(); clonePrompt(imageData.prompt); }); // Assemble elements cloneOverlay.appendChild(cloneButton); imageContainer.appendChild(img); imageContainer.appendChild(cloneOverlay); itemDiv.appendChild(imageContainer); return itemDiv;}function clonePrompt(prompt) { const heroPromptInput document.getElementById(heroPromptInput); const featureBadges document.getElementById(featureBadges); if (heroPromptInput) { // Fill prompt into textarea heroPromptInput.value prompt; // Scroll to feature badges position if (featureBadges) { featureBadges.scrollIntoView({ behavior: smooth, block: start, inline: nearest }); } else { // Try scrolling to generator area instead if (heroPromptInput.offsetParent) { heroPromptInput.offsetParent.scrollIntoView({ behavior: smooth, block: center }); } else { // Final fallback - scroll to a calculated position const heroSection document.querySelector(.gradient-bg); if (heroSection) { const rect heroSection.getBoundingClientRect(); const scrollTop window.pageYOffset + rect.top + (rect.height * 0.4); window.scrollTo({ top: scrollTop, behavior: smooth }); } } } // Focus on textarea setTimeout(() > { heroPromptInput.focus(); // Move cursor to end of text heroPromptInput.setSelectionRange(heroPromptInput.value.length, heroPromptInput.value.length); }, 800); }}// Fisher-Yates shuffle algorithm - randomly shuffle arrayfunction shuffleArray(array) { const shuffled ...array; // Create array copy to avoid modifying original for (let i shuffled.length - 1; i > 0; i--) { // Generate random index between 0 and i const j Math.floor(Math.random() * (i + 1)); // Swap elements shuffledi, shuffledj shuffledj, shuffledi; } return shuffled;}// Create generation placeholderfunction createGenerationPlaceholder(generationId, prompt) { const resultsContainer document.getElementById(resultsContainer); const generationResults document.getElementById(generationResults); if (!resultsContainer || !generationResults) { console.error(Results container not found); return; } // Show results area generationResults.classList.remove(hidden); // Create placeholder element const placeholderDiv document.createElement(div); placeholderDiv.id generationId; placeholderDiv.className bg-gray-800/50 rounded-xl overflow-hidden border border-gray-700/50 transition-all duration-300 hover:scale-105; placeholderDiv.innerHTML ` div classaspect-3/4 bg-gray-700/50 flex flex-col items-center justify-center relative> !-- Loading animation --> div classloading-spinner mb-4> div classrelative> div classw-16 h-16 border-4 border-gray-600 border-t-primary rounded-full animate-spin>/div> div classabsolute inset-0 flex items-center justify-center> i classfas fa-magic text-primary text-xl>/i> /div> /div> /div> !-- Status text --> div classtext-center px-4> p classtext-white font-medium mb-2>Gerando.../p> p classtext-gray-400 text-sm>Creating your AI masterpiece/p> /div> !-- Progress bar --> div classabsolute bottom-4 left-4 right-4> div classw-full bg-gray-600 rounded-full h-2> div classbg-primary h-2 rounded-full progress-bar stylewidth: 0%; animation: progress 3s ease-in-out infinite;>/div> /div> /div> /div> !-- Prompt display --> div classp-4 bg-gray-800/70> p classtext-gray-300 text-sm truncate cursor-pointer hover:text-white transition-colors title${prompt} onclickcopyPromptText(${prompt.replace(//g, \\)})> i classfas fa-quote-left mr-1 text-gray-500>/i> ${prompt} /p> div classflex justify-between items-center mt-2> span classtext-xs text-gray-500>${new Date().toLocaleTimeString()}/span> span classstatus-badge bg-orange-500/20 text-orange-400 px-2 py-1 rounded text-xs> i classfas fa-clock mr-1>/i>Gerando /span> /div> /div> `; // Insert new placeholder at the front of container resultsContainer.insertBefore(placeholderDiv, resultsContainer.firstChild); // Scroll to results area setTimeout(() > { generationResults.scrollIntoView({ behavior: smooth, block: start }); }, 100);}// Update generation resultfunction updateGenerationResult(generationId, imageUrl, status, errorMessage null) { const placeholder document.getElementById(generationId); if (!placeholder) { console.error(Placeholder not found:, generationId); return; } const prompt placeholder.querySelector(.truncate).textContent.replace(//g, ).trim(); if (status success && imageUrl) { // Generation successful, show image placeholder.innerHTML ` div classaspect-3/4 relative overflow-hidden group bg-gray-800/50 onclicktoggleImageActions(this)> !-- Blurred background --> div classabsolute inset-0 bg-cover bg-center filter blur-lg scale-110 opacity-40 stylebackground-image: url(${imageUrl});>/div> !-- Gradient overlay --> div classabsolute inset-0 bg-gradient-to-t from-black/30 via-transparent to-black/30>/div> !-- Foreground image --> div classabsolute inset-0 flex items-center justify-center> img src${imageUrl} altAI Generated Image classmax-w-full max-h-full object-contain transition-transform duration-300 group-hover:scale-105 drop-shadow-lg styleopacity: 0; transition: opacity 0.5s ease; onloadthis.style.opacity 1; this.classList.add(loaded);> /div> !-- Action buttons - Click to show on mobile, hover on desktop --> div classimage-actions absolute inset-0 bg-black/60 flex items-center justify-center opacity-0 group-hover:opacity-100 transition-opacity duration-300 hidden md:flex> div classflex flex-col gap-2 onclickevent.stopPropagation()> button onclickenlargeImage(${imageUrl}) classbg-purple-500 hover:bg-purple-600 text-white py-2 px-4 md:py-2 md:px-4 text-sm md:text-base rounded-lg transition-all touch-manipulation> i classfas fa-search-plus mr-1>/i> span classinline>Ampliar/span> /button> button onclickdownloadImage(${imageUrl}) classbg-blue-500 hover:bg-blue-600 text-white py-2 px-4 md:py-2 md:px-4 text-sm md:text-base rounded-lg transition-all touch-manipulation> i classfas fa-download mr-1>/i> span classinline>Baixar/span> /button> /div> /div> /div> !-- Prompt and status --> div classp-4 bg-gray-800/70> p classtext-gray-300 text-sm truncate cursor-pointer hover:text-white transition-colors title${prompt} onclickcopyPromptText(${prompt.replace(//g, \\)})> i classfas fa-quote-left mr-1 text-gray-500>/i> ${prompt} /p> div classflex justify-between items-center mt-2> span classtext-xs text-gray-500>${new Date().toLocaleTimeString()}/span> span classstatus-badge bg-green-500/20 text-green-400 px-2 py-1 rounded text-xs> i classfas fa-check mr-1>/i>Concluído /span> /div> /div> `; } else { // Generation failed const displayErrorMessage errorMessage || Generation failed, please try again later; placeholder.innerHTML ` div classaspect-3/4 bg-gray-700/50 flex flex-col items-center justify-center> div classtext-red-400 text-4xl mb-4> i classfas fa-exclamation-triangle>/i> /div> p classtext-red-400 font-medium mb-2>Falha na Geração/p> p classtext-gray-400 text-sm text-center px-4>${displayErrorMessage}/p> /div> div classp-4 bg-gray-800/70> p classtext-gray-300 text-sm truncate cursor-pointer hover:text-white transition-colors title${prompt} onclickcopyPromptText(${prompt.replace(//g, \\)})> i classfas fa-quote-left mr-1 text-gray-500>/i> ${prompt} /p> div classflex justify-between items-center mt-2> span classtext-xs text-gray-500>${new Date().toLocaleTimeString()}/span> span classstatus-badge bg-red-500/20 text-red-400 px-2 py-1 rounded text-xs> i classfas fa-times mr-1>/i>Falhou /span> /div> /div> `; }}// Call generator-api.php to generate imageasync function callGeneratorAPI(prompt) { const formData new FormData(); formData.append(action, generate); formData.append(Prompt, prompt); formData.append(Count, 1); const response await fetch(/api/generator-api.php, { method: POST, body: formData, credentials: same-origin }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json();}// Get generation resultasync function getGenerationResult(taskId) { const formData new FormData(); formData.append(action, get_result); formData.append(TaskID, taskId); const response await fetch(/api/generator-api.php, { method: POST, body: formData, credentials: same-origin }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json();}// Poll generation resultasync function pollGenerationResult(taskId, generationId, maxAttempts 60) { let attempts 0; // Dynamic polling interval: first 5 times every 2 seconds, then every 5 seconds const getInterval (attemptCount) > { return attemptCount 5 ? 2000 : 5000; }; const poll async () > { try { attempts++; console.log(`Polling attempt ${attempts}, Task ID: ${taskId}`); const result await getGenerationResult(taskId); if (result.success && result.status success && result.images && result.images.length > 0) { // Generation successful const imageUrl result.images0.temp_path; console.log(Generation successful, Image URL:, imageUrl); updateGenerationResult(generationId, imageUrl, success); return; } else if (result.success && result.status processing) { // Still processing, continue polling if (attempts maxAttempts) { const nextInterval getInterval(attempts); console.log(`Continue polling, next check interval: ${nextInterval}ms`); setTimeout(poll, nextInterval); } else { // Timeout console.log(Polling timeout); updateGenerationResult(generationId, null, error, Generation timeout, please try again later); } } else { // Generation failed console.log(Generation failed:, result.message); updateGenerationResult(generationId, null, error, result.message || Generation failed); } } catch (error) { console.error(Polling error:, error); if (attempts 3) { // Network error retry max 3 times, use shorter interval setTimeout(poll, 3000); } else { updateGenerationResult(generationId, null, error, Network error, please check connection); } } }; // Start first check immediately, then poll at intervals setTimeout(poll, 2000);}// Scroll to top of pagefunction scrollToTop() { const target document.getElementById(featureBadges); if (target && typeof target.scrollIntoView function) { target.scrollIntoView({ behavior: smooth, block: start }); } else { window.scrollTo({ top: 0, behavior: smooth }); }}// Mobile image actions togglefunction toggleImageActions(imageContainer) { // Only work on mobile/touch devices (desktop uses hover) if (window.innerWidth > 768) return; // md breakpoint const actions imageContainer.querySelector(.image-actions); if (!actions) return; // Check if currently visible const isHidden actions.classList.contains(hidden); // Hide all other image actions first hideAllImageActions(); // Toggle current one if (isHidden) { // Show with animation actions.classList.remove(hidden); // Force reflow for animation actions.offsetHeight; actions.classList.remove(opacity-0); actions.classList.add(opacity-100); // Auto-hide after 3 seconds setTimeout(() > { if (!actions.classList.contains(hidden)) { hideImageActions(actions); } }, 5000); } else { // Hide with animation hideImageActions(actions); }}// Hide image actions with animationfunction hideImageActions(actions) { actions.classList.remove(opacity-100); actions.classList.add(opacity-0); // Hide element after animation completes setTimeout(() > { actions.classList.add(hidden); }, 300);}// Hide all image actionsfunction hideAllImageActions() { document.querySelectorAll(.image-actions).forEach(action > { if (window.innerWidth 768) { // Mobile: use hidden class if (!action.classList.contains(hidden)) { hideImageActions(action); } } else { // Desktop: use opacity only action.classList.remove(opacity-100); action.classList.add(opacity-0); } });}// Hide image actions when clicking elsewheredocument.addEventListener(click, function(e) { // Only on mobile if (window.innerWidth > 768) return; // Dont hide if clicking on image container or actions if (e.target.closest(.group) || e.target.closest(.image-actions)) return; // Hide all visible actions hideAllImageActions();});// Image enlarge modal is now fully handled by app.js/script> /main> !-- Footer --> !-- Footer -->footer classbg-black py-12 border-t border-gray-800> div classcontainer mx-auto px-4> div classflex flex-col md:flex-row justify-between> !-- Logo e informações --> div classmb-8 md:mb-0 md:w-1/3> div classmb-4> img src/assets/images/logo-pornmaker.svg altLogo classh-8> /div> p classtext-gray-400 text-sm mb-4 leading-relaxed> A melhor plataforma gratuita de Gerador de Pornô por IA, movida por tecnologia avançada de inteligência artificial. Crie conteúdos adultos impressionantes gerados por IA, imagens XXX e hentai com algoritmos de ponta projetados para geração de conteúdo adulto. /p> div classflex space-x-4> a hrefhttps://x.com/pornmaker_org classtext-gray-400 hover:text-white transition-colors aria-labelSiga o Gerador de Pornô por IA no Twitter> i classfab fa-twitter>/i> /a> a hrefhttps://t.me/pornmakerorg classtext-gray-400 hover:text-white transition-colors aria-labelSiga o Gerador de Pornô por IA no Telegram> i classfab fa-telegram>/i> /a> /div> /div> !-- Links do rodapé --> div classgrid grid-cols-2 gap-8> div> h3 classtext-white font-semibold mb-4>Produto/h3> ul classspace-y-2> li>a href/#generateNow classtext-gray-400 hover:text-white text-sm transition-colors>Gerador de IA/a>/li> li>a href/#howItWorks classtext-gray-400 hover:text-white text-sm transition-colors>Como Funciona/a>/li> li>a href/#pricing classtext-gray-400 hover:text-white text-sm transition-colors>Preços/a>/li> li>a href/blogs classtext-gray-400 hover:text-white text-sm transition-colors>Blogs/a>/li> /ul> /div> div> h3 classtext-white font-semibold mb-4>Jurídico/h3> ul classspace-y-2> li>a href/privacy classtext-gray-400 hover:text-white text-sm transition-colors>Política de Privacidade/a>/li> li>a href/terms classtext-gray-400 hover:text-white text-sm transition-colors>Termos de Serviço/a>/li> li>a href/help classtext-gray-400 hover:text-white text-sm transition-colors>Central de Ajuda/a>/li> li>a href/free-credits classtext-gray-400 hover:text-white text-sm transition-colors>Créditos Grátis/a>/li> /ul> /div> /div> /div> div classborder-t border-gray-800 mt-12 pt-8> div classtext-center> p classtext-gray-500 text-sm mb-4>© 2025 Gerador de Pornô por IA. Todos os direitos reservados./p> p classtext-gray-600 text-xs> O Gerador de Pornô por IA utiliza inteligência artificial para criar obras digitais adultas. Todas as imagens geradas são apenas para adultos (18+) e uso pessoal. Use com responsabilidade e de acordo com nossos termos de serviço e as leis aplicáveis. /p> /div> /div> /div>/footer> !-- Google tag (gtag.js) -->script async srchttps://www.googletagmanager.com/gtag/js?idG-979D8FDPDM>/script>script> window.dataLayer window.dataLayer || ; function gtag(){dataLayer.push(arguments);} gtag(js, new Date()); gtag(config, G-979D8FDPDM);/script> !-- Flash Message - Bottom Banner --> script> document.addEventListener(DOMContentLoaded, function() { const message document.getElementById(message); if (message) { // Auto-hide after 5 seconds setTimeout(() > { message.style.opacity 0; message.style.transform translateY(100%); // Slide down for bottom position setTimeout(() > { if (message.parentElement) { message.remove(); } }, 300); }, 5000); } }); /script> script src/assets/js/app.js>/script> script> if (window.initInviteToast) { window.initInviteToast(); } /script>/body>/html>
View on OTX
|
View on ThreatMiner
Please enable JavaScript to view the
comments powered by Disqus.
Data with thanks to
AlienVault OTX
,
VirusTotal
,
Malwr
and
others
. [
Sitemap
]