It looks like this is a web page, not a feed. I looked for a feed associated with this page, but couldn't find one. Please enter the address of your feed to validate.

Source: https://copa88.link

  1.  
  2. <!DOCTYPE html>
  3. <html lang="en" data-env="production">
  4. <head>
  5.    <meta charset="utf-8">
  6.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.  
  8.            <link rel="alternate" href="https://aiexotic.com" hreflang="en" />
  9.                    <link rel="alternate" href="/es" hreflang="es" />
  10.                    <link rel="alternate" href="/zh" hreflang="zh-Hans" />
  11.                    <link rel="alternate" href="/ar" hreflang="ar" />
  12.                    <link rel="alternate" href="/pt" hreflang="pt" />
  13.                    <link rel="alternate" href="/ru" hreflang="ru" />
  14.                    <link rel="alternate" href="/ja" hreflang="ja" />
  15.                    <link rel="alternate" href="/de" hreflang="de" />
  16.                    <link rel="alternate" href="/fr" hreflang="fr" />
  17.                    <link rel="alternate" href="/ms" hreflang="ms" />
  18.                    <link rel="alternate" href="/it" hreflang="it" />
  19.                    <link rel="alternate" href="/ko" hreflang="ko" />
  20.                    <link rel="alternate" href="/id" hreflang="id" />
  21.                    <link rel="alternate" href="/tr" hreflang="tr" />
  22.                    <link rel="alternate" href="/nl" hreflang="nl" />
  23.                    <link rel="alternate" href="/pl" hreflang="pl" />
  24.                    <link rel="alternate" href="/vi" hreflang="vi" />
  25.                    <link rel="alternate" href="/bg" hreflang="bg" />
  26.                    <link rel="alternate" href="/hi" hreflang="hi" />
  27.        
  28.        <title>Free AI Porn Generator | AI NSFW &amp; AI Hentai</title>
  29.  
  30.  
  31. <meta name="title" content="Free AI Porn Generator | AI NSFW &amp; AI Hentai">
  32. <meta name="description" content="Generate the porn videos of your dreams with the power of artificial intelligence.">
  33.  
  34.    <meta name="keywords" content="Porn AI,Porn Picture Generator,AI Porn,ai hentai,ai anime,ai porno,ai sex,free ai porn,Porn,Image generation,AI-powered images,Customized images,Artificially intelligent images,Stable diffusion,Personalized images">
  35.  
  36.  
  37.  
  38.  
  39. <meta property="og:type" content="website">
  40. <meta property="og:url" content="https://aiexotic.com"/>
  41. <meta property="og:locale" content="en"/>
  42. <meta property="og:title" content="Free AI Porn Generator | AI NSFW &amp; AI Hentai"/>
  43. <meta property="og:description" content="Generate the porn videos of your dreams with the power of artificial intelligence.">
  44.  
  45.  
  46. <meta name="twitter:card" content="summary_large_image"/>
  47. <meta name="twitter:url" content="https://aiexotic.com">
  48. <meta name="twitter:title" content="Free AI Porn Generator | AI NSFW &amp; AI Hentai">
  49. <meta name="twitter:description" content="Generate the porn videos of your dreams with the power of artificial intelligence.">
  50.  
  51.  
  52.    <!-- CSRF Token -->
  53.    <meta name="csrf-token" content="SlOZrtNwh6IRM1K40yg8rlKHzcXnoYGJZLlcGXnb">
  54.  
  55.    <!-- Favicon -->
  56.    <link rel="shortcut icon" href="/images/favicon/favicon.ico">
  57.  
  58.    <!-- Fonts -->
  59.    
  60.    <link
  61.        rel="preload"
  62.        as="style"
  63.        href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap">
  64.    <style type="text/css">@font-face {font-family:DM Sans;font-style:normal;font-weight:400;src:url(/cf-fonts/v/dm-sans/5.0.18/latin-ext/wght/normal.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:DM Sans;font-style:normal;font-weight:400;src:url(/cf-fonts/v/dm-sans/5.0.18/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:DM Sans;font-style:normal;font-weight:500;src:url(/cf-fonts/v/dm-sans/5.0.18/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:DM Sans;font-style:normal;font-weight:500;src:url(/cf-fonts/v/dm-sans/5.0.18/latin-ext/wght/normal.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:DM Sans;font-style:normal;font-weight:700;src:url(/cf-fonts/v/dm-sans/5.0.18/latin-ext/wght/normal.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:DM Sans;font-style:normal;font-weight:700;src:url(/cf-fonts/v/dm-sans/5.0.18/latin/wght/normal.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:DM Sans;font-style:italic;font-weight:400;src:url(/cf-fonts/v/dm-sans/5.0.18/latin-ext/wght/italic.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:DM Sans;font-style:italic;font-weight:400;src:url(/cf-fonts/v/dm-sans/5.0.18/latin/wght/italic.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:DM Sans;font-style:italic;font-weight:500;src:url(/cf-fonts/v/dm-sans/5.0.18/latin-ext/wght/italic.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}@font-face {font-family:DM Sans;font-style:italic;font-weight:500;src:url(/cf-fonts/v/dm-sans/5.0.18/latin/wght/italic.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:DM Sans;font-style:italic;font-weight:700;src:url(/cf-fonts/v/dm-sans/5.0.18/latin/wght/italic.woff2);unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;font-display:swap;}@font-face {font-family:DM Sans;font-style:italic;font-weight:700;src:url(/cf-fonts/v/dm-sans/5.0.18/latin-ext/wght/italic.woff2);unicode-range:U+0100-02AF,U+0304,U+0308,U+0329,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20CF,U+2113,U+2C60-2C7F,U+A720-A7FF;font-display:swap;}</style>
  65.    <noscript>
  66.        <link rel="stylesheet"
  67.              href="https://fonts.googleapis.com/css2?family=DM+Sans:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&display=swap" />
  68.    </noscript>
  69.    <!-- Styles -->
  70.        <script>
  71.    (function() {
  72.      var link = document.createElement('link');
  73.      link.rel = 'canonical';
  74.      link.href = window.location.origin + '/';
  75.      document.head.appendChild(link);
  76.    })();
  77.  </script>
  78.    <style >[wire\:loading], [wire\:loading\.delay], [wire\:loading\.inline-block], [wire\:loading\.inline], [wire\:loading\.block], [wire\:loading\.flex], [wire\:loading\.table], [wire\:loading\.grid], [wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short], [wire\:loading\.delay\.long], [wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest] {display:none;}[wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}input:-webkit-autofill, select:-webkit-autofill, textarea:-webkit-autofill {animation-duration: 50000s;animation-name: livewireautofill;}@keyframes livewireautofill { from {} }</style>
  79.        <style>
  80.            #modal-container-higher-than-18 {
  81.                position: fixed !important;
  82.                top: 0;
  83.                left: 0;
  84.                width: 100vw;
  85.                height: 100vh;
  86.                z-index: 99999;
  87.                display: flex;
  88.                align-items: center;
  89.                justify-content: center;
  90.            }
  91.        </style>
  92.    
  93.    <!-- Scripts -->
  94.    
  95.            <!-- Google tag (gtag.js) - Analytics -->
  96.        <script async src="https://www.googletagmanager.com/gtag/js?id=G-ZP9RM1S0WM"></script>
  97.        <script>
  98.            window.dataLayer = window.dataLayer || [];
  99.            function gtag(){dataLayer.push(arguments);}
  100.            gtag('js', new Date());
  101.  
  102.            gtag('config', 'G-ZP9RM1S0WM');
  103.        </script>
  104.        <!-- End Google Tag Manager -->
  105.  
  106.        <!-- Cookies -->
  107.                    <script
  108.                async
  109.                type="text/javascript"
  110.                src="https://app.termly.io/embed.min.js"
  111.                data-auto-block="on"
  112.                data-website-uuid="7279f23c-8933-4b19-8cf9-ce363b88a126"
  113.            ></script>
  114.                <!-- End Cookies -->
  115.  
  116.    
  117.  
  118.    <!-- Scripts -->
  119.            <script src="/vendor/livewire/livewire.js?id=90730a3b0e7144480175" data-turbo-eval="false" data-turbolinks-eval="false" ></script><script data-turbo-eval="false" data-turbolinks-eval="false" >window.livewire = new Livewire();window.Livewire = window.livewire;window.livewire_app_url = '';window.livewire_token = 'SlOZrtNwh6IRM1K40yg8rlKHzcXnoYGJZLlcGXnb';window.deferLoadingAlpine = function (callback) {window.addEventListener('livewire:load', function () {callback();});};let started = false;window.addEventListener('alpine:initializing', function () {if (! started) {window.livewire.start();started = true;}});document.addEventListener("DOMContentLoaded", function () {if (! started) {window.livewire.start();started = true;}});</script>
  120.    
  121.            <link rel="preload" as="style" href="/build/assets/app.a1ae07b3.css" /><link rel="modulepreload" href="/build/assets/app.1614b84a.js" /><link rel="stylesheet" href="/build/assets/app.a1ae07b3.css" /><script type="module" src="/build/assets/app.1614b84a.js"></script>    
  122.    <link rel="preload" as="style" href="/build/assets/app.be190faf.css" /><link rel="stylesheet" href="/build/assets/app.be190faf.css" />
  123. </head>
  124.  
  125. <body class="antialiased font-dmsans flex flex-col min-h-screen">
  126.  
  127.    
  128.    
  129.        
  130.            <div id="modal-container-higher-than-18">
  131. <div id="modal-higher-than-18">
  132.    <div
  133.        class="justify-center items-center flex overflow-x-hidden overflow-y-auto fixed inset-0 z-30 outline-none
  134.        focus:outline-none bg-black/20 backdrop-blur-lg transition-opacity duration-150 ease-in-out"
  135.    >
  136.        <div class="relative w-auto my-6 mx-auto max-w-3xl">
  137.            <div class="flex flex-col items-center justify-center mb-8">
  138.                <img src="/images/logo/150px.png" class="h-16 md:h-20 object-contain mb-2" alt="Aiexotic"/>
  139.                <div class="flex gap-2 group">
  140.                    <span class="h-16 align-top flex text-5xl md:text-6xl bg-clip-text text-transparent bg-gradient-to-r from-teal-500 via-purple-500 to-orange-500 md:animate-text font-medium items-center text-anime-logo-hover">
  141.                        aiexotic
  142.                    </span>
  143.                </div>
  144.            </div>
  145.  
  146.            <div class="mx-3 md:mx-0 border-0 rounded-lg shadow-2xl shadow-blue-400 relative flex flex-col
  147.            w-auto md:w-full
  148.            bg-black outline-none focus:outline-none">
  149.  
  150.                <div class="flex flex-col items-center justify-center p-5 border-b border-solid border-slate-200 rounded-t">
  151.                    <h3 class="text-xl md:text-3xl font-semibold text-white">
  152.                        Are you over 18 years old ?                    </h3>
  153.                </div>
  154.  
  155.                <div class="relative p-2 md:p-6 flex-auto">
  156.                    <p class="my-1 md:my-4 text-slate-500 text-sm md:text-lg leading-relaxed text-white">
  157.                        Our site allows to generate images and videos for adults via an artificial intelligence.                    </p>
  158.                    <p class="my-1 md:my-4 text-slate-500 text-sm md:text-lg leading-relaxed text-white">
  159.                        It's simple to use and creating your image takes just a few seconds!                    </p>
  160.                </div>
  161.  
  162.                <div class="flex items-center justify-center p-2 md:p-6 border-t border-solid border-slate-200
  163.                rounded-b gap-4 md:gap-0">
  164.                    <a
  165.                        href="https://google.com"
  166.                        class="text-red-500 background-transparent font-bold uppercase px-1 md:px-6 py-2 text-sm
  167.                        outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
  168.                        type="button"
  169.                    >
  170.                        No I'm leaving                    </a>
  171.                    <button
  172.                        class="bg-emerald-900 text-white active:bg-emerald-600 font-bold uppercase text-sm px-3
  173.                        md:px-6 py-3 rounded shadow hover:shadow-lg outline-none focus:outline-none mr-1 mb-1 ease-linear transition-all duration-150"
  174.                        type="button"
  175.                        id="allow-higher-than-18"
  176.                    >
  177.                        I am 18 or older - enter                    </button>
  178.                </div>
  179.            </div>
  180.        </div>
  181.    </div>
  182.    <div class="opacity-25 fixed inset-0 z-20 bg-black"></div>
  183.  
  184.    
  185.    </div>
  186. </div>    
  187.            <div class="relative z-50 flex-shrink-0" x-data="{ isMenuOpen: false }">
  188.    <div class="max-w-8xl mx-auto px-1.5 sm:px-6 bg-black">
  189.        <div class="flex flex-nowrap justify-between items-center py-2 md:space-x-10">
  190.  
  191.            <div class="flex justify-start lg:w-0 lg:w-1/3">
  192.  
  193.                <div class="flex items-center">
  194.        <div class="flex items-center">
  195.        <img src="/images/logo/150px.png" class="h-7 md:h-9 object-contain mt-1.5 md:mt-0.5 mr-2"
  196.             alt=""/>
  197.  
  198.        <div class="flex gap-2 group">
  199.            <a href="https://aiexotic.com" class="h-8 align-top flex text-3xl md:text-4xl
  200.            bg-clip-text text-transparent bg-gradient-to-r from-teal-500 via-purple-500 to-orange-500
  201.            md:animate-text font-medium
  202.            items-center text-anime-logo-hover
  203.            ">
  204.                aiexotic
  205.            </a>
  206.        </div>
  207.        </div>
  208.  
  209.        <div class="hidden md:flex items-center ml-1 md:ml-4 gap-0.5 md:gap-1">
  210.  
  211.            <a class="inline-block text-white no-underline hover:text-pink-500 hover:text-underline text-center
  212.            transform scale-90 hover:scale-110 duration-100 ease-in-out"
  213.               href="https://discord.gg/8NMpzTsja4"
  214.               target="_blank"
  215.            >
  216.                <div title="" class="h-6 w-6 text-white" class="text-white">
  217.    <svg class="h-6 w-6 text-white" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-discord" viewBox="0 0 16 16">
  218.  <path d="M13.545 2.907a13.2 13.2 0 0 0-3.257-1.011.05.05 0 0 0-.052.025c-.141.25-.297.577-.406.833a12.2 12.2 0 0 0-3.658 0 8 8 0 0 0-.412-.833.05.05 0 0 0-.052-.025c-1.125.194-2.22.534-3.257 1.011a.04.04 0 0 0-.021.018C.356 6.024-.213 9.047.066 12.032q.003.022.021.037a13.3 13.3 0 0 0 3.995 2.02.05.05 0 0 0 .056-.019q.463-.63.818-1.329a.05.05 0 0 0-.01-.059l-.018-.011a9 9 0 0 1-1.248-.595.05.05 0 0 1-.02-.066l.015-.019q.127-.095.248-.195a.05.05 0 0 1 .051-.007c2.619 1.196 5.454 1.196 8.041 0a.05.05 0 0 1 .053.007q.121.1.248.195a.05.05 0 0 1-.004.085 8 8 0 0 1-1.249.594.05.05 0 0 0-.03.03.05.05 0 0 0 .003.041c.24.465.515.909.817 1.329a.05.05 0 0 0 .056.019 13.2 13.2 0 0 0 4.001-2.02.05.05 0 0 0 .021-.037c.334-3.451-.559-6.449-2.366-9.106a.03.03 0 0 0-.02-.019m-8.198 7.307c-.789 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.45.73 1.438 1.613 0 .888-.637 1.612-1.438 1.612m5.316 0c-.788 0-1.438-.724-1.438-1.612s.637-1.613 1.438-1.613c.807 0 1.451.73 1.438 1.613 0 .888-.631 1.612-1.438 1.612"/>
  219. </svg></div>
  220.            </a>
  221.  
  222.            <a class="inline-block text-blue-300 no-underline hover:text-pink-500 hover:text-underline text-center
  223.            transform scale-90 hover:scale-110 duration-100 ease-in-out"
  224.               href="https://twitter.com/aiexoticdotcom"
  225.               target="_blank"
  226.            >
  227.                <svg class="fill-current h-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
  228.                    <path
  229.                        d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"
  230.                    ></path>
  231.                </svg>
  232.            </a>
  233.  
  234.            <a class="inline-block text-blue-300 no-underline hover:text-pink-500 hover:text-underline text-center transform
  235.            scale-90 hover:scale-110 duration-100 ease-in-out"
  236.               href="https://www.reddit.com/r/aiexotic"
  237.               target="_blank"
  238.            >
  239.                <div title="" class="h-6 w-6 text-orange-600" class="text-orange-600">
  240.    <svg class="h-6 w-6 text-orange-600" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-reddit" viewBox="0 0 16 16">
  241.  <path d="M6.167 8a.83.83 0 0 0-.83.83c0 .459.372.84.83.831a.831.831 0 0 0 0-1.661m1.843 3.647c.315 0 1.403-.038 1.976-.611a.23.23 0 0 0 0-.306.213.213 0 0 0-.306 0c-.353.363-1.126.487-1.67.487-.545 0-1.308-.124-1.671-.487a.213.213 0 0 0-.306 0 .213.213 0 0 0 0 .306c.564.563 1.652.61 1.977.61zm.992-2.807c0 .458.373.83.831.83s.83-.381.83-.83a.831.831 0 0 0-1.66 0z"/>
  242.  <path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0m-3.828-1.165c-.315 0-.602.124-.812.325-.801-.573-1.9-.945-3.121-.993l.534-2.501 1.738.372a.83.83 0 1 0 .83-.869.83.83 0 0 0-.744.468l-1.938-.41a.2.2 0 0 0-.153.028.2.2 0 0 0-.086.134l-.592 2.788c-1.24.038-2.358.41-3.17.992-.21-.2-.496-.324-.81-.324a1.163 1.163 0 0 0-.478 2.224q-.03.17-.029.353c0 1.795 2.091 3.256 4.669 3.256s4.668-1.451 4.668-3.256c0-.114-.01-.238-.029-.353.401-.181.688-.592.688-1.069 0-.65-.525-1.165-1.165-1.165"/>
  243. </svg></div>
  244.            </a>
  245.  
  246.        </div>
  247.        </div>
  248.  
  249.            </div>
  250.  
  251.            <nav class="md:flex space-x-10 items-center md:w-4/6 justify-end tracking-wide">
  252.  
  253.                <div class="flex flex-grow justify-end gap-x-3 md:gap-x-6 justify-items-center items-center">
  254.  
  255.            <a href="/showcase"
  256.    class="transition-all duration-150 text-secondary-100 hover:text-white underline no-underline hidden sm:block py-2" size="none" mobile="mobile">
  257.  
  258.    
  259.    Showcase
  260. </a>
  261.  
  262.            <a href="/txt2img"
  263.    class="transition-all duration-150 text-secondary-100 hover:text-white underline no-underline hidden sm:block" size="none" mobile="mobile">
  264.  
  265.    
  266.    <div class="h-[32px] image-btn-container
  267.                py-0.5 px-2 text-sm md:py-1 md:px-4 md:text-base
  268.                inline-flex animate-bg-primary-switch-optimized text-white font-bold
  269.                     rounded-md focus:ring transform hover:scale-105 transition duration-300 ease-in-out">
  270.                    <div class="image-btn-content">
  271.                        <span class="normal-text">IMAGE</span>
  272.                        <span class="hover-text">CREATE</span>
  273.                    </div>
  274.                </div>
  275. </a>
  276.  
  277.            <a href="/ai-video-generator"
  278.    class="transition-all duration-150 text-secondary-100 hover:text-white underline no-underline" size="none" mobile="mobile">
  279.  
  280.    
  281.    <div class="h-[26px] md:h-[32px] video-btn-container inline-flex rounded-md focus:ring transform hover:scale-105 transition duration-300 ease-in-out px-1 md:px-4">
  282.                    <div class="video-btn-content">
  283.                        <div class="video-icon">
  284.                            <div title="" class="h-4 w-4" >
  285.    <svg class="h-4 w-4" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"/></svg></div>
  286.                        </div>
  287.                        <div class="video-text">
  288.                            <span>VIDEO</span>
  289.                        </div>
  290.                        <div class="hover-text">
  291.                            <span>CREATE</span>
  292.                        </div>
  293.                    </div>
  294.                </div>
  295. </a>
  296.  
  297.            <a href="/characters"
  298.    class="transition-all duration-150 text-secondary-100 hover:text-white underline no-underline relative" size="none" mobile="mobile">
  299.  
  300.    
  301.    <div class="
  302.                py-0.5 px-2 text-sm md:py-1 md:px-3 md:text-base
  303.                inline-flex border border-purple-500 text-white font-bold
  304.                     rounded-md focus:ring transform hover:scale-105 transition duration-300 ease-in-out">
  305.                    <div class="absolute -top-3 -right-4 bg-primary rounded-full">
  306.                        <div title="" class="h-6 w-6 text-purple-500" class="text-purple-500">
  307.    <svg class="h-6 w-6 text-purple-500" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-chat-heart" viewBox="0 0 16 16">
  308.  <path fill-rule="evenodd" d="M2.965 12.695a1 1 0 0 0-.287-.801C1.618 10.83 1 9.468 1 8c0-3.192 3.004-6 7-6s7 2.808 7 6-3.004 6-7 6a8 8 0 0 1-2.088-.272 1 1 0 0 0-.711.074c-.387.196-1.24.57-2.634.893a11 11 0 0 0 .398-2m-.8 3.108.02-.004c1.83-.363 2.948-.842 3.468-1.105A9 9 0 0 0 8 15c4.418 0 8-3.134 8-7s-3.582-7-8-7-8 3.134-8 7c0 1.76.743 3.37 1.97 4.6a10.4 10.4 0 0 1-.524 2.318l-.003.011a11 11 0 0 1-.244.637c-.079.186.074.394.273.362a22 22 0 0 0 .693-.125M8 5.993c1.664-1.711 5.825 1.283 0 5.132-5.825-3.85-1.664-6.843 0-5.132"/>
  309. </svg></div>
  310.                    </div>
  311.                    <span>CHAT</span>
  312.                </div>
  313. </a>
  314.  
  315.            
  316.            
  317.  
  318.            
  319.            
  320.                <a class="nav-link text-white font-bold" href="/login">Login</a>
  321.  
  322.            
  323.        </div>
  324.  
  325.            </nav>
  326.  
  327.        </div>
  328.    </div>
  329.  
  330.        
  331. </div>
  332.    
  333.    <div class="leading-normal tracking-normal text-indigo-400 bg-cover bg-fixed bg-black min-h-screen"
  334.          >
  335.            <div class="relative"
  336.    x-data="{
  337.        showRegister: false,
  338.        showLogin: false,
  339.        showForm() {
  340.            return this.showRegister || this.showLogin;
  341.        },
  342.        makeVisibleRegister(redirectUrlIfAuthenticated = null) {
  343.            
  344.            fetch(`/save-intended-url?url=${redirectUrlIfAuthenticated}`, {
  345.                method: 'GET',
  346.                headers: {
  347.                    'Accept': 'application/json',
  348.                }
  349.            })
  350.            .then(response => response.json())
  351.            .then(data => {
  352.                console.log('URL prévue sauvegardée');
  353.            })
  354.            .catch(error => {
  355.                console.error('Erreur lors de la sauvegarde de l\'URL prévue', error);
  356.            });
  357.  
  358.            this.showRegister = true;
  359.            this.showLogin = false;
  360.        }
  361.    }"
  362.    >
  363.  
  364.    <!-- Gradient supérieur renforcé -->
  365.    <div class="absolute -top-[3px] left-0 w-full h-[50px] bg-gradient-to-b from-black to-transparent z-10"></div>
  366.  
  367.        <!-- Overlay du formulaire -->
  368.        <div x-cloak
  369.             x-show="showForm()"
  370.             x-transition:enter="transition ease-out duration-300"
  371.             x-transition:enter-start="opacity-0 scale-90"
  372.             x-transition:enter-end="opacity-100 scale-100"
  373.             x-transition:leave="transition ease-in duration-300"
  374.             x-transition:leave-start="opacity-100 scale-100"
  375.             x-transition:leave-end="opacity-0 scale-90"
  376.             x-transition.delay.50ms
  377.             class="fixed inset-0 bg-black/70 z-[9999] flex items-center justify-center">
  378.            <div class="w-full max-w-4xl mx-4" @click.away="showRegister = false; showLogin = false">
  379.                <div x-show="showRegister"
  380.                x-transition:enter="transition ease-out duration-300"
  381.                x-transition:enter-start="opacity-0 scale-90"
  382.                x-transition:enter-end="opacity-100 scale-100"
  383.                x-transition:leave="transition ease-in duration-300"
  384.                x-transition:leave-start="opacity-100 scale-100"
  385.                x-transition:leave-end="opacity-0 scale-90"
  386.                x-transition.delay.50ms
  387.                     >
  388.                    <div class="flex flex-col md:flex-row justify-center w-full max-w-3xl mx-auto" x-data="{}">
  389.    <!-- Vidéo (masquée sur mobile) -->
  390.    <div class="hidden md:block md:w-1/2 relative overflow-hidden rounded-l-3xl">
  391.        <video id="login-video" class="absolute inset-0 w-full h-full object-cover" muted loop autoplay playsinline>
  392.            <source src="/videos/login-video.mp4" type="video/mp4">
  393.            Your browser does not support the video tag.        </video>
  394.    </div>
  395.  
  396.    <!-- Formulaire -->
  397.    <div class="w-full md:w-1/2 bg-primary bg-opacity-90 backdrop-blur-md shadow-lg rounded-3xl md:rounded-l-none"
  398.         @click.away="showLogin = false;"
  399.         x-init="
  400.            $nextTick(() => {
  401.                const videoId = &#039;login-video&#039;;
  402.                const video = document.getElementById(videoId);
  403.                if (video) {
  404.                    video.play().catch(e => console.error('Erreur de lecture vidéo:', e));
  405.                }
  406.            });
  407.         ">
  408.        <div class="p-3 sm:p-10">
  409.            <div class="space-y-4">
  410.                <h2 class="text-2xl text-white font-bold">
  411.                    <span class="text-4xl underline underline-offset-2">Login</span> to unlock the best of AiExotic                </h2>
  412.            </div>
  413.  
  414.            <form action="/magic-link" method="post">
  415.    <input type="hidden" name="_token" value="SlOZrtNwh6IRM1K40yg8rlKHzcXnoYGJZLlcGXnb" autocomplete="off">
  416.    <input type="hidden" name="timezone" class="timezone" id="timezone">
  417.  
  418.    <div class="mt-6 md:mt-8 grid space-y-4">
  419.        <div class="flex-wrap items-center gap-2 pb-2">
  420.            <div class="flex gap-2 text-primary flex-col">
  421.    <label class="block tracking-wide text-secondary-100 select-none" for="email">
  422.    Email
  423.  
  424.    </label>
  425.    <input
  426.    class="basic-input-text hover:border-cyan-800 rounded-md" id="email" name="email" type="email" required="required" placeholder="Enter your email">
  427.    </div>
  428.        </div>
  429.    </div>
  430.  
  431.  
  432.    <button type="submit"
  433.            class="group sign-button">
  434.        <div class="relative flex items-center space-x-4 justify-center">
  435.            <div title="" class="h-6 w-6 absolute left-0 w-5 text-white" alt="email" alt="email" class="absolute left-0 w-5 text-white">
  436.    <svg class="h-6 w-6 absolute left-0 w-5 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z"/></svg></div>
  437.            <span href="" class="block w-max font-semibold tracking-wide text-white text-sm
  438.                                transition duration-300 sm:text-base">
  439.                                    One-Click Email Login                                </span>
  440.        </div>
  441.    </button>
  442.  
  443. </form>
  444.  
  445.            <div class="my-4 flex items-center before:mt-0.5 before:flex-1 before:border-t before:border-neutral-500
  446.                after:mt-0.5 after:flex-1 after:border-t after:border-neutral-500">
  447.                <p class="mx-4 mb-0 text-center font-semibold text-white">
  448.                    Or                </p>
  449.            </div>
  450.  
  451.            <form class="mt-2 grid space-y-4" method="POST" action="/login/provider">
  452.                <input type="hidden" name="_token" value="SlOZrtNwh6IRM1K40yg8rlKHzcXnoYGJZLlcGXnb" autocomplete="off">
  453.                <input type="hidden" name="timezone" class="timezone" id="timezone">
  454.  
  455.                <button name="provider" value="discord" type="submit" class="group sign-button">
  456.                    <div class="relative flex items-center space-x-4 justify-center">
  457.                        <img src="/images/services/discord.svg" class="absolute left-0
  458.                                            w-5" alt="discord logo" />
  459.                        <span href="" class="block w-max font-semibold tracking-wide text-white text-sm
  460.                                            transition duration-300 sm:text-base">
  461.                                                Continue with Discord                                            </span>
  462.                    </div>
  463.                </button>
  464.  
  465.                <button name="provider" value="google" type="submit"
  466.                        class="group sign-button">
  467.                    <div class="relative flex items-center space-x-4 justify-center">
  468.                        <img src="/images/services/google.svg" class="absolute left-0 w-5" alt="google logo" />
  469.                        <span class="block w-max font-semibold tracking-wide text-white text-sm transition duration-300 sm:text-base">
  470.                                                Continue with Google                                            </span>
  471.                    </div>
  472.                </button>
  473.  
  474.                <button name="provider" value="reddit" type="submit" class="group sign-button">
  475.                    <div class="relative flex items-center space-x-4 justify-center">
  476.                        <img src="/images/services/reddit.svg" class="absolute left-0
  477.                                            w-5" alt="reddit logo" />
  478.                        <span href="" class="block w-max font-semibold tracking-wide text-white text-sm transition duration-300 sm:text-base">
  479.                                                Continue with Reddit                                            </span>
  480.                    </div>
  481.                </button>
  482.  
  483.            </form>
  484.  
  485.            <div class="mt-2 md:mt-4 space-y-4 text-white text-center sm:-mb-8">
  486.    <p class="text-xs">
  487.        By clicking Continue with Discord, Google, Reddit or One-Click Email Login, you agree to our <span class="underline"><a href="/terms/conditions">Terms of Use</a></span> and confirm you have read our <span class="underline"><a href="/terms/privacy">Privacy Policy</a></span>.
  488.    </p>
  489. </div>
  490.        </div>
  491.    </div>
  492. </div>
  493.                </div>
  494.                <div x-show="showLogin" x-cloak
  495.                x-transition:enter="transition ease-out duration-300"
  496.                x-transition:enter-start="opacity-0 scale-90"
  497.                x-transition:enter-end="opacity-100 scale-100"
  498.                x-transition:leave="transition ease-in duration-300"
  499.                x-transition:leave-start="opacity-100 scale-100"
  500.                x-transition:leave-end="opacity-0 scale-90"
  501.                     >
  502.                    <div class="flex flex-col md:flex-row justify-center w-full max-w-3xl mx-auto" x-data="{}">
  503.    <!-- Vidéo (masquée sur mobile) -->
  504.    <div class="hidden md:block md:w-1/2 relative overflow-hidden rounded-l-3xl">
  505.        <video id="login-video" class="absolute inset-0 w-full h-full object-cover" muted loop autoplay playsinline>
  506.            <source src="/videos/login-video.mp4" type="video/mp4">
  507.            Your browser does not support the video tag.        </video>
  508.    </div>
  509.  
  510.    <!-- Formulaire -->
  511.    <div class="w-full md:w-1/2 bg-primary bg-opacity-90 backdrop-blur-md shadow-lg rounded-3xl md:rounded-l-none"
  512.         @click.away="showLogin = false;"
  513.         x-init="
  514.            $nextTick(() => {
  515.                const videoId = &#039;login-video&#039;;
  516.                const video = document.getElementById(videoId);
  517.                if (video) {
  518.                    video.play().catch(e => console.error('Erreur de lecture vidéo:', e));
  519.                }
  520.            });
  521.         ">
  522.        <div class="p-3 sm:p-10">
  523.            <div class="space-y-4">
  524.                <h2 class="text-2xl text-white font-bold">
  525.                    <span class="text-4xl underline underline-offset-2">Login</span> to unlock the best of AiExotic                </h2>
  526.            </div>
  527.  
  528.            <form action="/magic-link" method="post">
  529.    <input type="hidden" name="_token" value="SlOZrtNwh6IRM1K40yg8rlKHzcXnoYGJZLlcGXnb" autocomplete="off">
  530.    <input type="hidden" name="timezone" class="timezone" id="timezone">
  531.  
  532.    <div class="mt-6 md:mt-8 grid space-y-4">
  533.        <div class="flex-wrap items-center gap-2 pb-2">
  534.            <div class="flex gap-2 text-primary flex-col">
  535.    <label class="block tracking-wide text-secondary-100 select-none" for="email">
  536.    Email
  537.  
  538.    </label>
  539.    <input
  540.    class="basic-input-text hover:border-cyan-800 rounded-md" id="email" name="email" type="email" required="required" placeholder="Enter your email">
  541.    </div>
  542.        </div>
  543.    </div>
  544.  
  545.  
  546.    <button type="submit"
  547.            class="group sign-button">
  548.        <div class="relative flex items-center space-x-4 justify-center">
  549.            <div title="" class="h-6 w-6 absolute left-0 w-5 text-white" alt="email" alt="email" class="absolute left-0 w-5 text-white">
  550.    <svg class="h-6 w-6 absolute left-0 w-5 text-white" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M0 0h24v24H0V0z" fill="none"/><path d="M22 6c0-1.1-.9-2-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6zm-2 0l-8 5-8-5h16zm0 12H4V8l8 5 8-5v10z"/></svg></div>
  551.            <span href="" class="block w-max font-semibold tracking-wide text-white text-sm
  552.                                transition duration-300 sm:text-base">
  553.                                    One-Click Email Login                                </span>
  554.        </div>
  555.    </button>
  556.  
  557. </form>
  558.  
  559.            <div class="my-4 flex items-center before:mt-0.5 before:flex-1 before:border-t before:border-neutral-500
  560.                after:mt-0.5 after:flex-1 after:border-t after:border-neutral-500">
  561.                <p class="mx-4 mb-0 text-center font-semibold text-white">
  562.                    Or                </p>
  563.            </div>
  564.  
  565.            <form class="mt-2 grid space-y-4" method="POST" action="/login/provider">
  566.                <input type="hidden" name="_token" value="SlOZrtNwh6IRM1K40yg8rlKHzcXnoYGJZLlcGXnb" autocomplete="off">
  567.                <input type="hidden" name="timezone" class="timezone" id="timezone">
  568.  
  569.                <button name="provider" value="discord" type="submit" class="group sign-button">
  570.                    <div class="relative flex items-center space-x-4 justify-center">
  571.                        <img src="/images/services/discord.svg" class="absolute left-0
  572.                                            w-5" alt="discord logo" />
  573.                        <span href="" class="block w-max font-semibold tracking-wide text-white text-sm
  574.                                            transition duration-300 sm:text-base">
  575.                                                Continue with Discord                                            </span>
  576.                    </div>
  577.                </button>
  578.  
  579.                <button name="provider" value="google" type="submit"
  580.                        class="group sign-button">
  581.                    <div class="relative flex items-center space-x-4 justify-center">
  582.                        <img src="/images/services/google.svg" class="absolute left-0 w-5" alt="google logo" />
  583.                        <span class="block w-max font-semibold tracking-wide text-white text-sm transition duration-300 sm:text-base">
  584.                                                Continue with Google                                            </span>
  585.                    </div>
  586.                </button>
  587.  
  588.                <button name="provider" value="reddit" type="submit" class="group sign-button">
  589.                    <div class="relative flex items-center space-x-4 justify-center">
  590.                        <img src="/images/services/reddit.svg" class="absolute left-0
  591.                                            w-5" alt="reddit logo" />
  592.                        <span href="" class="block w-max font-semibold tracking-wide text-white text-sm transition duration-300 sm:text-base">
  593.                                                Continue with Reddit                                            </span>
  594.                    </div>
  595.                </button>
  596.  
  597.            </form>
  598.  
  599.            <div class="mt-2 md:mt-4 space-y-4 text-white text-center sm:-mb-8">
  600.    <p class="text-xs">
  601.        By clicking Continue with Discord, Google, Reddit or One-Click Email Login, you agree to our <span class="underline"><a href="/terms/conditions">Terms of Use</a></span> and confirm you have read our <span class="underline"><a href="/terms/privacy">Privacy Policy</a></span>.
  602.    </p>
  603. </div>
  604.        </div>
  605.    </div>
  606. </div>
  607.                </div>
  608.            </div>
  609.        </div>
  610.  
  611.        <!-- Contenu Principal -->
  612.        <div class="container mx-auto py-4 sm:py-6 lg:py-8 max-w-[1920px]">
  613.  
  614.            
  615.            <!-- Section Video -->
  616.            <section class="grid grid-cols-1 lg:grid-cols-2 gap-4 sm:gap-6 lg:gap-8 min-h-[50vh] lg:min-h-[85vh]">
  617.                <!-- Colonne de gauche avec le slider vidéo -->
  618.                <div class="lg:order-1 flex flex-col">
  619.                    <!-- Title visible only on mobile -->
  620.                    <div class="block lg:hidden mt-0.5 md:mt-3 mb-2 relative z-50">
  621.                        <h1 class="text-4xl sm:text-5xl md:text-6xl font-bold text-primary-video pointer-events-none text-center">
  622.                            AI PORN VIDEO GENERATOR                        </h1>
  623.                    </div>
  624.  
  625.                    <!-- Video slider container -->
  626.                    <div class="relative h-full min-h-full">
  627.                        <div
  628.    x-data="{ currentVideo: $store.videoSlider.currentVideo }"
  629.    x-init="$store.videoSlider.init()"
  630.    class="relative h-full w-full overflow-hidden md:overflow-visible pt-2 md:pt-10 z-10">
  631.    <!-- Container des vidéos avec perspective -->
  632.    <div class="relative h-full w-full" style="perspective: 3000px;">
  633.        <!-- Vidéos -->
  634.        <template x-for="(video, index) in $store.videoSlider.videoData" :key="index">
  635.            <div :class="{
  636.                    'absolute transition-all duration-[1500ms] ease-in-out rounded-[2rem] overflow-hidden shadow-2xl': true,
  637.                    '-top-[3%] md:top-[0%] left-[50%] -translate-x-1/2 w-[70%] md:w-[50%] opacity-100 z-30 scale-100': $store.videoSlider.getVideoState(index) === 'current',
  638.                    'top-[25%] md:top-[20%] left-0 -translate-x-[30%] w-[40%] md:w-[30%] opacity-60 md:opacity-80 z-20 scale-90 rotate-y-20': $store.videoSlider.getVideoState(index) === 'prev',
  639.                    'top-[10%] left-[3%] -translate-x-[80%] w-[15%] md:w-[25%] opacity-0 md:opacity-10 z-10 scale-75 rotate-y-30': $store.videoSlider.getVideoState(index) === 'farPrev',
  640.                    'top-[35%] md:top-[30%] left-[80%] w-[40%] md:w-[30%] opacity-60 md:opacity-40 z-20 scale-85 -rotate-y-15': $store.videoSlider.getVideoState(index) === 'next',
  641.                    'top-[30%] -translate-y-1/2 left-full translate-x-[60%] w-[15%] md:w-[20%] opacity-0 md:opacity-10 z-10 scale-60 -rotate-y-40': $store.videoSlider.getVideoState(index) === 'farNext',
  642.                    'top-[35%] -translate-y-1/2 left-full translate-x-[60%] w-[15%] md:w-[20%] opacity-0 z-0 scale-60 -rotate-y-40': $store.videoSlider.getVideoState(index) === 'hidden'
  643.                }"
  644.                style="transform-style: preserve-3d; backface-visibility: hidden; will-change: transform, opacity;"
  645.                @mouseover="$store.videoSlider.handleHover(index)"
  646.                @mouseout="$store.videoSlider.handleHoverEnd(index)">
  647.                
  648.                <div class="relative aspect-[3/4] w-full">
  649.                    <video :class="{
  650.                            'w-full h-full object-cover transition-all duration-[1500ms] ease-in-out': true,
  651.                            'opacity-0': $store.videoSlider.getVideoState(index) === 'hidden'
  652.                           }"
  653.                           :src="video.src"
  654.                           :poster="video.poster"
  655.                           :data-video-index="index"
  656.                           :data-video-state="$store.videoSlider.getVideoState(index)"
  657.                           muted
  658.                           playsinline
  659.                           preload="auto"
  660.                           :autoplay="$store.videoSlider.getVideoState(index) === 'current'"></video>
  661.                    
  662.                    <!-- Overlay gradient -->
  663.                    <div :class="{
  664.                        'absolute inset-0 bg-gradient-to-t pointer-events-none transition-opacity duration-1000': true,
  665.                        'from-black/60 via-black/20 to-transparent': $store.videoSlider.getVideoState(index) === 'current',
  666.                        'from-black/80 via-black/40 to-transparent': ['prev', 'next'].includes($store.videoSlider.getVideoState(index)),
  667.                        'from-black/90 via-black/60 to-black/20': ['farPrev', 'farNext'].includes($store.videoSlider.getVideoState(index))
  668.                    }"></div>
  669.                </div>
  670.            </div>
  671.        </template>
  672.    </div>
  673. </div>
  674.  
  675. <style>
  676. .rotate-y-10 {
  677.    transform: rotateY(10deg);
  678. }
  679. .-rotate-y-10 {
  680.    transform: rotateY(-10deg);
  681. }
  682. .rotate-y-15 {
  683.    transform: rotateY(15deg);
  684. }
  685. .-rotate-y-15 {
  686.    transform: rotateY(-15deg);
  687. }
  688. .rotate-y-20 {
  689.    transform: rotateY(20deg);
  690. }
  691. .-rotate-y-20 {
  692.    transform: rotateY(-20deg);
  693. }
  694. .rotate-y-30 {
  695.    transform: rotateY(30deg);
  696. }
  697. .-rotate-y-30 {
  698.    transform: rotateY(-30deg);
  699. }
  700. .rotate-y-40 {
  701.    transform: rotateY(40deg);
  702. }
  703. .-rotate-y-40 {
  704.    transform: rotateY(-40deg);
  705. }
  706. </style>
  707.  
  708.                    </div>
  709.  
  710.                    <!-- CTA visible only on mobile -->
  711.                    <div class="block lg:hidden mt-4">
  712.                        <div class="flex justify-center w-full pointer-events-auto opacity-80 hover:opacity-100 transition duration-300">
  713.                            <button @click.prevent="makeVisibleRegister('/ai-video-generator')"
  714.                                class="relative flex items-center gap-3 sm:gap-4 md:gap-6 bg-video-btn rounded-full hover:scale-105 transition duration-300 ease-in-out
  715.                                py-3 px-6 sm:py-5 sm:px-7 md:py-6 md:px-8 shadow-xl">
  716.                                <span class="text-lg sm:text-xl md:text-2xl text-white font-black tracking-wide">
  717.                                    Create My Video                                </span>
  718.                                <div title="" class="h-6 w-6 text-white" class="text-white">
  719.    <svg class="h-6 w-6 text-white" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"/></svg></div>
  720.                            </button>
  721.                        </div>
  722.                    </div>
  723.                </div>
  724.  
  725.                <!-- Colonne de droite avec le texte et CTA (visible only on desktop) -->
  726.                <div class="hidden lg:flex lg:order-2 flex-col justify-start h-full -mt-12 lg:mt-0">
  727.                    <div class="flex flex-col items-center space-y-4 sm:space-y-6 lg:space-y-8 w-full">
  728.                        <h1 class="text-4xl sm:text-5xl md:text-6xl lg:text-7xl xl:text-8xl font-bold text-primary-video z-[60] pointer-events-none text-center lg:text-left">
  729.                            AI PORN VIDEO GENERATOR                        </h1>
  730.                        
  731.                        <div class="flex justify-center w-full pointer-events-auto opacity-80 hover:opacity-100 transition duration-300">
  732.                            <button @click.prevent="makeVisibleRegister('/ai-video-generator')"
  733.                                class="group relative flex items-center gap-3 sm:gap-4 md:gap-6 bg-primary-video rounded-full hover:scale-105 transition duration-300 ease-in-out
  734.                                py-3 px-6 sm:py-5 sm:px-7 md:py-6 md:px-8">
  735.                                <span class="text-lg sm:text-xl md:text-2xl lg:text-3xl text-white font-black tracking-wide">
  736.                                    Create My Video                                </span>
  737.                                <div title="" class="h-8 w-8 text-white" class="text-white">
  738.    <svg class="h-8 w-8 text-white" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Free 6.7.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc. --><path d="M73 39c-14.8-9.1-33.4-9.4-48.5-.9S0 62.6 0 80L0 432c0 17.4 9.4 33.4 24.5 41.9s33.7 8.1 48.5-.9L361 297c14.3-8.7 23-24.2 23-41s-8.7-32.2-23-41L73 39z"/></svg></div>
  739.                            </button>
  740.                        </div>
  741.                    </div>
  742.                </div>
  743.            </section>
  744.  
  745.            <!-- Section Chat -->
  746.            <section class="relative mt-32 lg:-mt-32">
  747.                <div class="absolute inset-0 bg-gradient-to-r from-purple-900/20 via-pink-900/20 to-purple-900/20 blur-3xl"></div>
  748.                <div class="relative">
  749.                    <div class="container mx-auto px-4 sm:px-6 lg:px-8 pt-16 pb-10">
  750.    <div class="flex flex-col lg:grid lg:grid-cols-2 gap-x-8 gap-y-8 lg:gap-y-16 lg:items-start">
  751.        <!-- Chat Demo - Appears first on mobile -->
  752.        <div class="order-1 lg:order-2 relative max-w-4xl mx-auto"
  753.             x-data="{
  754.                messages: JSON.parse('[{\u0022type\u0022:\u0022ai\u0022,\u0022text\u0022:\u0022Fuck, it\\u0027s you! I\\u0027ve been fantasizing about you all day... My pussy is soaked just thinking about your cock. I\\u0027m on fire, I need you.\u0022,\u0022visible\u0022:true},{\u0022type\u0022:\u0022user\u0022,\u0022text\u0022:\u0022Are you so hot? Are you ready to do anything for me?\u0022,\u0022visible\u0022:false},{\u0022type\u0022:\u0022ai\u0022,\u0022text\u0022:\u0022More than you can imagine. On my knees, on all fours, whatever. I want to feel you. Tell me how you want to take me.\u0022,\u0022visible\u0022:false},{\u0022type\u0022:\u0022user\u0022,\u0022text\u0022:\u0022I want to feel you vibrate against me, watch you writhe in pleasure...\u0022,\u0022visible\u0022:false},{\u0022type\u0022:\u0022ai\u0022,\u0022text\u0022:\u0022Then come. Come closer, fuck me hard. I\\u0027m so wet for you. Rip my clothes off, I don\\u0027t care! Take me now.\u0022,\u0022visible\u0022:false},{\u0022type\u0022:\u0022user\u0022,\u0022text\u0022:\u0022[You grab her by the hips, your fingers digging into her flesh. You pin her against the wall, the heat of her body against yours driving you crazy.]\u0022,\u0022visible\u0022:false},{\u0022type\u0022:\u0022ai\u0022,\u0022text\u0022:\u0022Ahhh... Yes! Harder, fuck me! I want to feel your cock deep inside me... Don\\u0027t stop! [She spreads her legs, letting you glimpse her wet pussy.]\u0022,\u0022visible\u0022:false}]'),
  755.                currentIndex: 0,
  756.                animationStarted: false,
  757.                showNextMessage() {
  758.                    if (!this.animationStarted) return;
  759.                    if (this.currentIndex < this.messages.length - 1) {
  760.                        this.currentIndex++;
  761.                        this.messages[this.currentIndex].visible = true;
  762.                        if (this.currentIndex < this.messages.length - 1) {
  763.                            const delay = this.currentIndex === 0 ? 2000 : 3000;
  764.                            setTimeout(() => this.showNextMessage(), delay);
  765.                        }
  766.                    }
  767.                }
  768.             }"
  769.             x-intersect:enter.half="animationStarted = true; showNextMessage()">
  770.            
  771.            <!-- Décoration d'arrière-plan -->
  772.            <div class="absolute -top-8 right-8 w-32 h-32 bg-gradient-to-br from-purple-500/20 to-pink-500/20 rounded-full blur-xl"></div>
  773.            <div class="absolute -bottom-8 left-8 w-32 h-32 bg-gradient-to-br from-purple-500/20 to-pink-500/20 rounded-full blur-xl"></div>
  774.  
  775.            <!-- Container principal -->
  776.            <div class="relative">
  777.  
  778.                <!-- Title visible only on mobile -->
  779.                <div class="block lg:hidden mt-2 mb-2">
  780.                    <h1 class="text-4xl sm:text-5xl md:text-6xl font-bold text-primary-video z-[60] pointer-events-none text-center">
  781.                        NSFW AI Chatbot                    </h1>
  782.                </div>
  783.  
  784.                <!-- Messages Container avec effet de perspective aléatoire -->
  785.                <div class="space-y-6 relative h-[70vh] max-h-[70vh] overflow-y-auto lg:pr-4" x-ref="messagesContainer">
  786.  
  787.  
  788.            <!-- Bouton sticky mobile -->
  789.            
  790.                    <template x-for="(message, index) in messages" :key="index">
  791.                        <div class="transition-all duration-500 ease-out transform"
  792.                             :class="{
  793.                                'opacity-0 translate-y-4 absolute pointer-events-none': !message.visible || (!animationStarted && index > 0),
  794.                                'opacity-100 translate-y-0 relative': message.visible && (animationStarted || index === 0),
  795.                                'flex justify-end': message.type === 'user',
  796.                                'flex justify-start': message.type === 'ai'
  797.                             }"
  798.                             x-effect="if (message.visible) { $nextTick(() => { $refs.messagesContainer.scrollTop = $refs.messagesContainer.scrollHeight; }); }">
  799.                            
  800.                            <!-- Message de l'IA avec avatar -->
  801.                            <template x-if="message.type === 'ai'">
  802.                                <div class="flex flex-col gap-1">
  803.                                    <div class="flex items-center gap-2 px-2">
  804.                                        <div class="w-10 h-10 rounded-full bg-gradient-to-br from-purple-500 to-pink-500 p-0.5 transform -rotate-6 hover:rotate-0 transition-transform duration-300">
  805.                                            <div class="w-full h-full rounded-xl bg-black flex items-center justify-center overflow-hidden">
  806.                                                <img src="/images/home/chat/chat-demo-avatar.webp" alt="AI Avatar" class="w-full h-full object-cover">
  807.                                            </div>
  808.                                        </div>
  809.                                        <span class="text-sm text-purple-300 font-medium">Luna</span>
  810.                                    </div>
  811.                                    <div class="max-w-md transform transition-transform duration-300 group-hover:scale-[1.02] ml-10">
  812.                                        <div class="bg-gradient-to-br from-purple-500/20 to-pink-500/20 backdrop-blur-sm p-0.5 rounded-2xl rounded-tl-none">
  813.                                            <div class="bg-black/60 rounded-2xl rounded-tl-none p-4">
  814.                                                <p class="text-gray-100" x-text="message.text"></p>
  815.                                            </div>
  816.                                        </div>
  817.                                    </div>
  818.                                </div>
  819.                            </template>
  820.  
  821.                            <!-- Message de l'utilisateur -->
  822.                            <template x-if="message.type === 'user'">
  823.                                <div class="flex flex-col items-end gap-1">
  824.                                    <div class="flex items-center gap-2 px-2">
  825.                                        <span class="text-sm text-purple-300 font-medium">Vous</span>
  826.                                    </div>
  827.                                    <div class="max-w-md transform transition-transform duration-300 group-hover:scale-[1.02]">
  828.                                        <div class="bg-gradient-to-br from-purple-500 to-pink-500 p-0.5 rounded-2xl rounded-tr-none">
  829.                                            <div class="bg-black rounded-2xl rounded-tr-none p-4">
  830.                                                <p class="text-gray-100" x-text="message.text"></p>
  831.                                            </div>
  832.                                        </div>
  833.                                    </div>
  834.                                </div>
  835.                            </template>
  836.                        </div>
  837.                    </template>
  838.                </div>
  839.  
  840.            </div>
  841.  
  842.        </div>
  843.  
  844.        <!-- Bouton mobile entre les blocs -->
  845.        <div class="flex justify-center mt-8 md:hidden z-50 order-2">
  846.            <span
  847.            @click.prevent="makeVisibleRegister('/characters');"
  848.            class="cursor-pointer inline-flex items-center px-6 py-3 text-base font-semibold text-white bg-purple-500 rounded-full hover:bg-purple-600 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:ring-offset-2 transition-all duration-300 shadow-lg hover:shadow-xl hover:scale-105">
  849.                Start Chatting                <svg class="ml-2 -mr-1 w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
  850.                    <path fill-rule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clip-rule="evenodd" />
  851.                </svg>
  852.            </span>
  853.        </div>
  854.  
  855.        <!-- Title and CTA - Appears second on mobile -->
  856.        <div class="hidden md:block order-2 lg:order-1 relative z-10 items-center mt-8 lg:mt-0">
  857.            <h2 class="text-4xl md:text-5xl lg:text-8xl font-extrabold text-transparent bg-clip-text bg-gradient-to-r from-purple-400 via-pink-500 to-purple-600 animate-gradient-x">
  858.                NSFW AI CHATBOT            </h2>
  859.            <span class="block mt-4 text-2xl md:text-3xl lg:text-4xl font-extrabold text-transparent bg-gradient-to-r from-purple-200 to-pink-300 bg-clip-text">
  860.                Your Hottest Sexual Fantasies, Unfiltered!            </span>
  861.            <p class="mt-10 text-lg leading-8 text-gray-300">
  862.                Dive into an NSFW AI Chat with limitless Character AI. Create your ideal AI Girlfriend and experience Adult Roleplay like never before!            </p>
  863.            <div class="mt-8 hidden lg:block">
  864.                <span
  865.                @click.prevent="makeVisibleRegister('/characters');"
  866.                class="cursor-pointer inline-flex items-center px-6 py-3 text-base font-semibold text-white bg-purple-500 rounded-full hover:bg-purple-600 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:ring-offset-2 transition-all duration-300 shadow-lg hover:shadow-xl hover:scale-105">
  867.                    Start Chatting                    <svg class="ml-2 -mr-1 w-5 h-5" fill="currentColor" viewBox="0 0 20 20">
  868.                        <path fill-rule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clip-rule="evenodd" />
  869.                    </svg>
  870.                </span>
  871.            </div>
  872.        </div>
  873.  
  874.    </div>
  875. </div>
  876.  
  877. <style>
  878. @keyframes blob {
  879.    0% {
  880.        transform: translate(0px, 0px) scale(1);
  881.    }
  882.    33% {
  883.        transform: translate(30px, -50px) scale(1.1);
  884.    }
  885.    66% {
  886.        transform: translate(-20px, 20px) scale(0.9);
  887.    }
  888.    100% {
  889.        transform: translate(0px, 0px) scale(1);
  890.    }
  891. }
  892.  
  893. @keyframes gradient-x {
  894.    0% {
  895.        background-position: 0% 50%;
  896.    }
  897.    50% {
  898.        background-position: 100% 50%;
  899.    }
  900.    100% {
  901.        background-position: 0% 50%;
  902.    }
  903. }
  904.  
  905. .animate-gradient-x {
  906.    background-size: 200% auto;
  907.    animation: gradient-x 8s ease infinite;
  908. }
  909.  
  910. .animate-blob {
  911.    animation: blob 7s infinite;
  912. }
  913.  
  914. .animation-delay-2000 {
  915.    animation-delay: 2s;
  916. }
  917.  
  918. .animation-delay-4000 {
  919.    animation-delay: 4s;
  920. }
  921. </style>
  922.                    <!-- Gradient inférieur -->
  923.                    <div class="absolute bottom-0 left-0 w-full h-64 bg-gradient-to-t from-black via-black/50 to-transparent"></div>
  924.                </div>
  925.            </section>
  926.  
  927.            <!-- Image Grid Section -->
  928.            <section class="relative w-full">
  929.    <div class="delay-[250ms] delay-[500ms] delay-[750ms] delay-[1000ms] delay-[1250ms] delay-[1500ms] delay-[1750ms] delay-[2000ms] delay-[2250ms] delay-[2500ms] delay-[2750ms]"></div>
  930.    
  931.    <!-- Gradient supérieur renforcé -->
  932.    <div class="absolute -top-[3px] left-0 w-full h-[70px] bg-gradient-to-b from-black to-transparent z-10"></div>
  933.    
  934.    <!-- Grille d'images -->
  935.    <div class="w-full mx-auto overflow-hidden">
  936.        <div class="grid grid-cols-2 md:grid-cols-3 xl:grid-cols-5 gap-0">
  937.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[250ms]
  938.                    transform transition-all opacity-0 translate-y-12 ease-out"
  939.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  940.                    <div
  941.    x-data='{
  942.        currentIndex: 0,
  943.        images: ["https:\/\/aiexotic.com\/images\/home\/fc22c9ad-8c11-4eb7-a1a9-e7679a8e0d9b.png","https:\/\/aiexotic.com\/images\/home\/1ed52b9b-b1f5-49e4-bd3b-d5b4858d7b3a.png","https:\/\/aiexotic.com\/images\/home\/37858ef3-8192-4c63-8812-f3d3d24f3a8a.png"],
  944.        initCarousel() {
  945.            setInterval(() => {
  946.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  947.            },
  948.            this.getRandomTime(4000, 8000));
  949.        },
  950.        getRandomTime(min, max) {
  951.            return Math.floor(Math.random() * (max - min + 1) + min);
  952.        }
  953.    }'
  954.    x-init="$data.initCarousel()" x-cloak>
  955.    <!-- Slides -->
  956.  
  957.    <template x-for="(img, index) in images" :key="index">
  958.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  959.        currentIndex"
  960.             x-transition:enter="transition ease-out duration-300"
  961.             x-transition:enter-start="opacity-0 blur-sm"
  962.             x-transition:enter-end="opacity-100 blur-none"
  963.             x-transition:leave="transition ease-in duration-300"
  964.             x-transition:leave-start="opacity-100 blur-none"
  965.             x-transition:leave-end="opacity-0 blur-sm"
  966.        >
  967.            <img :src="img" class="w-full object-cover"
  968.                 loading="lazy"
  969.                 decoding="async"
  970.            >
  971.        </div>
  972.    </template>
  973.  
  974. </div>
  975.                </div>
  976.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[500ms]
  977.                    transform transition-all opacity-0 translate-y-12 ease-out"
  978.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  979.                    <div
  980.    x-data='{
  981.        currentIndex: 0,
  982.        images: ["https:\/\/aiexotic.com\/images\/home\/eroticgirl -- (5).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl (14).jpg","https:\/\/aiexotic.com\/images\/home\/7ca1fdd0-3116-4781-806b-fcfe3cdba436.png"],
  983.        initCarousel() {
  984.            setInterval(() => {
  985.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  986.            },
  987.            this.getRandomTime(4000, 8000));
  988.        },
  989.        getRandomTime(min, max) {
  990.            return Math.floor(Math.random() * (max - min + 1) + min);
  991.        }
  992.    }'
  993.    x-init="$data.initCarousel()" x-cloak>
  994.    <!-- Slides -->
  995.  
  996.    <template x-for="(img, index) in images" :key="index">
  997.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  998.        currentIndex"
  999.             x-transition:enter="transition ease-out duration-300"
  1000.             x-transition:enter-start="opacity-0 blur-sm"
  1001.             x-transition:enter-end="opacity-100 blur-none"
  1002.             x-transition:leave="transition ease-in duration-300"
  1003.             x-transition:leave-start="opacity-100 blur-none"
  1004.             x-transition:leave-end="opacity-0 blur-sm"
  1005.        >
  1006.            <img :src="img" class="w-full object-cover"
  1007.                 loading="lazy"
  1008.                 decoding="async"
  1009.            >
  1010.        </div>
  1011.    </template>
  1012.  
  1013. </div>
  1014.                </div>
  1015.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[750ms]
  1016.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1017.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1018.                    <div
  1019.    x-data='{
  1020.        currentIndex: 0,
  1021.        images: ["https:\/\/aiexotic.com\/images\/home\/eroticgirl (16).jpg","https:\/\/aiexotic.com\/images\/home\/8a25b5a2-c9cf-4bfd-b298-0ee819412600.png","https:\/\/aiexotic.com\/images\/home\/bfdb8d3a-e19a-49ad-846e-e1a5e0da4b58.png"],
  1022.        initCarousel() {
  1023.            setInterval(() => {
  1024.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1025.            },
  1026.            this.getRandomTime(4000, 8000));
  1027.        },
  1028.        getRandomTime(min, max) {
  1029.            return Math.floor(Math.random() * (max - min + 1) + min);
  1030.        }
  1031.    }'
  1032.    x-init="$data.initCarousel()" x-cloak>
  1033.    <!-- Slides -->
  1034.  
  1035.    <template x-for="(img, index) in images" :key="index">
  1036.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1037.        currentIndex"
  1038.             x-transition:enter="transition ease-out duration-300"
  1039.             x-transition:enter-start="opacity-0 blur-sm"
  1040.             x-transition:enter-end="opacity-100 blur-none"
  1041.             x-transition:leave="transition ease-in duration-300"
  1042.             x-transition:leave-start="opacity-100 blur-none"
  1043.             x-transition:leave-end="opacity-0 blur-sm"
  1044.        >
  1045.            <img :src="img" class="w-full object-cover"
  1046.                 loading="lazy"
  1047.                 decoding="async"
  1048.            >
  1049.        </div>
  1050.    </template>
  1051.  
  1052. </div>
  1053.                </div>
  1054.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[1000ms]
  1055.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1056.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1057.                    <div
  1058.    x-data='{
  1059.        currentIndex: 0,
  1060.        images: ["https:\/\/aiexotic.com\/images\/home\/29f34c2b-221b-4304-b684-fe7b6f5946cf.png","https:\/\/aiexotic.com\/images\/home\/eroticgirl (13).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl (26).jpg"],
  1061.        initCarousel() {
  1062.            setInterval(() => {
  1063.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1064.            },
  1065.            this.getRandomTime(4000, 8000));
  1066.        },
  1067.        getRandomTime(min, max) {
  1068.            return Math.floor(Math.random() * (max - min + 1) + min);
  1069.        }
  1070.    }'
  1071.    x-init="$data.initCarousel()" x-cloak>
  1072.    <!-- Slides -->
  1073.  
  1074.    <template x-for="(img, index) in images" :key="index">
  1075.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1076.        currentIndex"
  1077.             x-transition:enter="transition ease-out duration-300"
  1078.             x-transition:enter-start="opacity-0 blur-sm"
  1079.             x-transition:enter-end="opacity-100 blur-none"
  1080.             x-transition:leave="transition ease-in duration-300"
  1081.             x-transition:leave-start="opacity-100 blur-none"
  1082.             x-transition:leave-end="opacity-0 blur-sm"
  1083.        >
  1084.            <img :src="img" class="w-full object-cover"
  1085.                 loading="lazy"
  1086.                 decoding="async"
  1087.            >
  1088.        </div>
  1089.    </template>
  1090.  
  1091. </div>
  1092.                </div>
  1093.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[1250ms]
  1094.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1095.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1096.                    <div
  1097.    x-data='{
  1098.        currentIndex: 0,
  1099.        images: ["https:\/\/aiexotic.com\/images\/home\/54ab0b66-c4f1-40cd-8fca-69eea93f4341.png","https:\/\/aiexotic.com\/images\/home\/eroticgirl (29).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl (31).jpg"],
  1100.        initCarousel() {
  1101.            setInterval(() => {
  1102.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1103.            },
  1104.            this.getRandomTime(4000, 8000));
  1105.        },
  1106.        getRandomTime(min, max) {
  1107.            return Math.floor(Math.random() * (max - min + 1) + min);
  1108.        }
  1109.    }'
  1110.    x-init="$data.initCarousel()" x-cloak>
  1111.    <!-- Slides -->
  1112.  
  1113.    <template x-for="(img, index) in images" :key="index">
  1114.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1115.        currentIndex"
  1116.             x-transition:enter="transition ease-out duration-300"
  1117.             x-transition:enter-start="opacity-0 blur-sm"
  1118.             x-transition:enter-end="opacity-100 blur-none"
  1119.             x-transition:leave="transition ease-in duration-300"
  1120.             x-transition:leave-start="opacity-100 blur-none"
  1121.             x-transition:leave-end="opacity-0 blur-sm"
  1122.        >
  1123.            <img :src="img" class="w-full object-cover"
  1124.                 loading="lazy"
  1125.                 decoding="async"
  1126.            >
  1127.        </div>
  1128.    </template>
  1129.  
  1130. </div>
  1131.                </div>
  1132.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[1500ms]
  1133.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1134.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1135.                    <div
  1136.    x-data='{
  1137.        currentIndex: 0,
  1138.        images: ["https:\/\/aiexotic.com\/images\/home\/eroticgirl (20).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl -- (1).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl (18).jpg"],
  1139.        initCarousel() {
  1140.            setInterval(() => {
  1141.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1142.            },
  1143.            this.getRandomTime(4000, 8000));
  1144.        },
  1145.        getRandomTime(min, max) {
  1146.            return Math.floor(Math.random() * (max - min + 1) + min);
  1147.        }
  1148.    }'
  1149.    x-init="$data.initCarousel()" x-cloak>
  1150.    <!-- Slides -->
  1151.  
  1152.    <template x-for="(img, index) in images" :key="index">
  1153.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1154.        currentIndex"
  1155.             x-transition:enter="transition ease-out duration-300"
  1156.             x-transition:enter-start="opacity-0 blur-sm"
  1157.             x-transition:enter-end="opacity-100 blur-none"
  1158.             x-transition:leave="transition ease-in duration-300"
  1159.             x-transition:leave-start="opacity-100 blur-none"
  1160.             x-transition:leave-end="opacity-0 blur-sm"
  1161.        >
  1162.            <img :src="img" class="w-full object-cover"
  1163.                 loading="lazy"
  1164.                 decoding="async"
  1165.            >
  1166.        </div>
  1167.    </template>
  1168.  
  1169. </div>
  1170.                </div>
  1171.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[1750ms]
  1172.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1173.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1174.                    <div
  1175.    x-data='{
  1176.        currentIndex: 0,
  1177.        images: ["https:\/\/aiexotic.com\/images\/home\/c7012e7a-5ce0-4ec4-9434-28acf7a002dc.png","https:\/\/aiexotic.com\/images\/home\/03c5c977-0cb1-4652-9a13-2155a48faec5.png","https:\/\/aiexotic.com\/images\/home\/eroticgirl (33).jpg"],
  1178.        initCarousel() {
  1179.            setInterval(() => {
  1180.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1181.            },
  1182.            this.getRandomTime(4000, 8000));
  1183.        },
  1184.        getRandomTime(min, max) {
  1185.            return Math.floor(Math.random() * (max - min + 1) + min);
  1186.        }
  1187.    }'
  1188.    x-init="$data.initCarousel()" x-cloak>
  1189.    <!-- Slides -->
  1190.  
  1191.    <template x-for="(img, index) in images" :key="index">
  1192.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1193.        currentIndex"
  1194.             x-transition:enter="transition ease-out duration-300"
  1195.             x-transition:enter-start="opacity-0 blur-sm"
  1196.             x-transition:enter-end="opacity-100 blur-none"
  1197.             x-transition:leave="transition ease-in duration-300"
  1198.             x-transition:leave-start="opacity-100 blur-none"
  1199.             x-transition:leave-end="opacity-0 blur-sm"
  1200.        >
  1201.            <img :src="img" class="w-full object-cover"
  1202.                 loading="lazy"
  1203.                 decoding="async"
  1204.            >
  1205.        </div>
  1206.    </template>
  1207.  
  1208. </div>
  1209.                </div>
  1210.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[2000ms]
  1211.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1212.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1213.                    <div
  1214.    x-data='{
  1215.        currentIndex: 0,
  1216.        images: ["https:\/\/aiexotic.com\/images\/home\/8c3cf59a-b29a-4fac-9b3f-eb40cfdb300c.png","https:\/\/aiexotic.com\/images\/home\/eroticgirl (23).jpg","https:\/\/aiexotic.com\/images\/home\/eb649c4e-a139-4f14-b204-496e13bbf065.png"],
  1217.        initCarousel() {
  1218.            setInterval(() => {
  1219.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1220.            },
  1221.            this.getRandomTime(4000, 8000));
  1222.        },
  1223.        getRandomTime(min, max) {
  1224.            return Math.floor(Math.random() * (max - min + 1) + min);
  1225.        }
  1226.    }'
  1227.    x-init="$data.initCarousel()" x-cloak>
  1228.    <!-- Slides -->
  1229.  
  1230.    <template x-for="(img, index) in images" :key="index">
  1231.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1232.        currentIndex"
  1233.             x-transition:enter="transition ease-out duration-300"
  1234.             x-transition:enter-start="opacity-0 blur-sm"
  1235.             x-transition:enter-end="opacity-100 blur-none"
  1236.             x-transition:leave="transition ease-in duration-300"
  1237.             x-transition:leave-start="opacity-100 blur-none"
  1238.             x-transition:leave-end="opacity-0 blur-sm"
  1239.        >
  1240.            <img :src="img" class="w-full object-cover"
  1241.                 loading="lazy"
  1242.                 decoding="async"
  1243.            >
  1244.        </div>
  1245.    </template>
  1246.  
  1247. </div>
  1248.                </div>
  1249.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[2250ms]
  1250.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1251.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1252.                    <div
  1253.    x-data='{
  1254.        currentIndex: 0,
  1255.        images: ["https:\/\/aiexotic.com\/images\/home\/eroticgirl -- (4).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl (37).jpg","https:\/\/aiexotic.com\/images\/home\/eroticgirl (35).jpg"],
  1256.        initCarousel() {
  1257.            setInterval(() => {
  1258.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1259.            },
  1260.            this.getRandomTime(4000, 8000));
  1261.        },
  1262.        getRandomTime(min, max) {
  1263.            return Math.floor(Math.random() * (max - min + 1) + min);
  1264.        }
  1265.    }'
  1266.    x-init="$data.initCarousel()" x-cloak>
  1267.    <!-- Slides -->
  1268.  
  1269.    <template x-for="(img, index) in images" :key="index">
  1270.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1271.        currentIndex"
  1272.             x-transition:enter="transition ease-out duration-300"
  1273.             x-transition:enter-start="opacity-0 blur-sm"
  1274.             x-transition:enter-end="opacity-100 blur-none"
  1275.             x-transition:leave="transition ease-in duration-300"
  1276.             x-transition:leave-start="opacity-100 blur-none"
  1277.             x-transition:leave-end="opacity-0 blur-sm"
  1278.        >
  1279.            <img :src="img" class="w-full object-cover"
  1280.                 loading="lazy"
  1281.                 decoding="async"
  1282.            >
  1283.        </div>
  1284.    </template>
  1285.  
  1286. </div>
  1287.                </div>
  1288.                            <div class="relative w-full aspect-[3/4] duration-700 delay-[2500ms]
  1289.                    transform transition-all opacity-0 translate-y-12 ease-out"
  1290.                    data-replace='{ "translate-y-12": "translate-y-0", "opacity-0": "opacity-100" }'>
  1291.                    <div
  1292.    x-data='{
  1293.        currentIndex: 0,
  1294.        images: ["https:\/\/aiexotic.com\/images\/home\/78423d28-5597-4539-8f10-e43d1e39d665.png","https:\/\/aiexotic.com\/images\/home\/eroticgirl_1_girl_20_years_sporty_face_focus_pear_shaped_giant_boobs_radiant_face_stockings.jpg","https:\/\/aiexotic.com\/images\/home\/519a4071-3b55-4009-966b-7eddbdedcd39.png"],
  1295.        initCarousel() {
  1296.            setInterval(() => {
  1297.              this.currentIndex = (this.currentIndex + 1) % this.images.length;
  1298.            },
  1299.            this.getRandomTime(4000, 8000));
  1300.        },
  1301.        getRandomTime(min, max) {
  1302.            return Math.floor(Math.random() * (max - min + 1) + min);
  1303.        }
  1304.    }'
  1305.    x-init="$data.initCarousel()" x-cloak>
  1306.    <!-- Slides -->
  1307.  
  1308.    <template x-for="(img, index) in images" :key="index">
  1309.        <div class="absolute transform hover:scale-110 transition  inset-0 overflow-hidden" x-show="index ===
  1310.        currentIndex"
  1311.             x-transition:enter="transition ease-out duration-300"
  1312.             x-transition:enter-start="opacity-0 blur-sm"
  1313.             x-transition:enter-end="opacity-100 blur-none"
  1314.             x-transition:leave="transition ease-in duration-300"
  1315.             x-transition:leave-start="opacity-100 blur-none"
  1316.             x-transition:leave-end="opacity-0 blur-sm"
  1317.        >
  1318.            <img :src="img" class="w-full object-cover"
  1319.                 loading="lazy"
  1320.                 decoding="async"
  1321.            >
  1322.        </div>
  1323.    </template>
  1324.  
  1325. </div>
  1326.                </div>
  1327.                    </div>
  1328.    </div>
  1329.  
  1330.    <!-- Gradient inférieur -->
  1331.    <div class="absolute bottom-0 left-0 w-full h-64 bg-gradient-to-t from-black via-black/50 to-transparent"></div>
  1332.  
  1333.    <!-- Overlay central avec contenu -->
  1334.    <div class="absolute inset-0 flex items-start sm:items-center justify-center pt-[25%] sm:pt-0">
  1335.        <div class="bg-black/80 backdrop-blur-sm p-8 md:p-12 rounded-2xl max-w-4xl mx-4 transform hover:scale-105 transition-transform duration-300">
  1336.            <h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-center bg-gradient-to-r from-purple-400 to-pink-600 bg-clip-text text-transparent mb-6">
  1337.                Create Your Own Porn Images with AI            </h2>
  1338.            <p class="text-gray-300 text-center text-lg md:text-xl max-w-2xl mx-auto mb-8">
  1339.                Unleash your wildest fantasies with our AI image generator. Discover sensual, custom-made creations with endless possibilities to fulfill your every desire.            </p>
  1340.            <div class="flex flex-col sm:flex-row justify-center items-center space-y-4 sm:space-y-0 sm:space-x-6">
  1341.                <span @click.prevent="makeVisibleRegister('/txt2img');" class=" cursor-pointer inline-flex items-center px-8 py-4 text-lg font-semibold text-white bg-gradient-to-r from-purple-500 to-pink-600 rounded-full hover:from-purple-600 hover:to-pink-700 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:ring-offset-2 transition-all duration-300 shadow-lg hover:shadow-xl hover:scale-105 group">
  1342.                    Generate an Image                    <svg class="ml-2 -mr-1 w-6 h-6 transition-transform duration-300 group-hover:translate-x-1" fill="currentColor" viewBox="0 0 20 20">
  1343.                        <path fill-rule="evenodd" d="M10.293 3.293a1 1 0 011.414 0l6 6a1 1 0 010 1.414l-6 6a1 1 0 01-1.414-1.414L14.586 11H3a1 1 0 110-2h11.586l-4.293-4.293a1 1 0 010-1.414z" clip-rule="evenodd" />
  1344.                    </svg>
  1345.                </span>
  1346.                <a href="/showcase" class="inline-flex items-center px-8 py-4 text-lg font-semibold text-white border-2 border-purple-500/50 rounded-full hover:bg-purple-500/10 focus:outline-none focus:ring-2 focus:ring-purple-500 focus:ring-offset-2 transition-all duration-300 group">
  1347.                    View the Showcase                    <svg class="ml-2 -mr-1 w-6 h-6 transition-transform duration-300 group-hover:translate-x-1" fill="currentColor" viewBox="0 0 20 20">
  1348.                        <path fill-rule="evenodd" d="M4 3a2 2 0 00-2 2v10a2 2 0 002 2h12a2 2 0 002-2V5a2 2 0 00-2-2H4zm12 12H4l4-8 3 6 2-4 3 6z" clip-rule="evenodd" />
  1349.                    </svg>
  1350.                </a>
  1351.            </div>
  1352.        </div>
  1353.    </div>
  1354. </section>
  1355.  
  1356. <script>
  1357. document.addEventListener("DOMContentLoaded", function(){
  1358.    setTimeout(function(){
  1359.        var replacers = document.querySelectorAll('[data-replace]');
  1360.        for(var i=0; i<replacers.length; i++){
  1361.            let replaceClasses = JSON.parse(replacers[i].dataset.replace.replace(/'/g, '"'));
  1362.            Object.keys(replaceClasses).forEach(function(key) {
  1363.                replacers[i].classList.remove(key);
  1364.                replacers[i].classList.add(replaceClasses[key]);
  1365.            });
  1366.        }
  1367.    }, 1);
  1368. });
  1369. </script>
  1370.  
  1371.        </div>
  1372.    </div>
  1373.    </div>
  1374.  
  1375.            <footer class="text-white bg-black border-t-[1px] border-gray-600 mt-auto">
  1376.    <div class="container px-6 pt-16 mx-auto">
  1377.  
  1378.  
  1379.        <div class="grid grid-cols-2 lg:grid-cols-4">
  1380.  
  1381.            <div class="mb-6">
  1382.                <h5 class="uppercase font-bold mb-2.5">Socials</h5>
  1383.  
  1384.                <ul class="list-none mb-0">
  1385.                    <li>
  1386.                        <a target="_blank" href="https://discord.gg/8NMpzTsja4" class="text-white">Discord</a>
  1387.                    </li>
  1388.                    <li>
  1389.                        <a target="_blank" href="https://www.reddit.com/r/aiexotic" class="text-white">Reddit</a>
  1390.                    </li>
  1391.                    <li>
  1392.                        <a target="_blank" href="https://twitter.com/aiexoticdotcom" class="text-white">Twitter</a>
  1393.                    </li>
  1394.                </ul>
  1395.            </div>
  1396.  
  1397.            <div class="mb-6">
  1398.                <h5 class="uppercase font-bold mb-2.5">Links</h5>
  1399.  
  1400.                <ul class="list-none mb-0">
  1401.                    <li>
  1402.                        <a href="/terms/conditions" class="text-white">Terms and Conditions</a>
  1403.                    </li>
  1404.                    <li>
  1405.                        <a href="/terms/privacy" class="text-white">Privacy</a>
  1406.                    </li>
  1407.                    <li>
  1408.                        <a href="/terms/cookie-policy" class="text-white">Cookie Policy</a>
  1409.                    </li>
  1410.                    <li>
  1411.                        <a href="#" onclick="window.displayPreferenceModal();return false;" id="termly-consent-preferences">Consent Preferences</a>
  1412.                    </li>
  1413.                    <li>
  1414.                        <a href="/terms/2257" class="text-white">18 U.S.C. 2257 Record-Keeping
  1415.                            Requirements Compliance Statement</a>
  1416.                    </li>
  1417.                    <li>
  1418.                        <a href="https://cs.segpay.com/" target="_blank" class="text-white">Segpay billing support</a>
  1419.                    </li>
  1420.                    <li>
  1421.                        <a href="/complaints-and-content-removal" class="text-white">Complaints & Content Removal</a>
  1422.                    </li>
  1423.                </ul>
  1424.            </div>
  1425.  
  1426.            <div class="mb-6">
  1427.                <h5 class="uppercase font-bold mb-2.5">Links</h5>
  1428.  
  1429.                <ul class="list-none mb-0">
  1430.                    <li><a href="https://aiexotic.com" class="text-white">Home</a></li>
  1431.                    <li><a href="/login" class="text-white">Login</a></li>
  1432.                    <li><a href="/characters" class="text-white">AI porn chat</a></li>
  1433.                    <li><a href="/txt2img" class="text-white">Image Generator</a></li>
  1434.                    <li><a href="/ai-video-generator">Video Generator</a></li>
  1435.                    <li><a href="/videos/tags" class="text-white">Explore Video Tags</a></li>
  1436.                    <li><a href="/blog" class="text-white">Blog</a></li>
  1437.                </ul>
  1438.            </div>
  1439.  
  1440.            <div class="mb-6">
  1441.                <h5 class="uppercase font-bold mb-2.5">Partners 💕</h5>
  1442.  
  1443.                <ul class="list-none mb-0">
  1444.                                                                        <li>
  1445.                                <a href="https://thebestfetishsites.com/ai-porn-sites/" target="_blank" class="text-white">
  1446.                                    Best AI Fetish Sites
  1447.                                </a>
  1448.                            </li>
  1449.                                                    <li>
  1450.                                <a href="https://porntourist.com/?ref=aiexotic" target="_blank" class="text-white">
  1451.                                    Porn Tourist
  1452.                                </a>
  1453.                            </li>
  1454.                                                    <li>
  1455.                                <a href="https://thepornmap.com" target="_blank" class="text-white">
  1456.                                    The Porn Map
  1457.                                </a>
  1458.                            </li>
  1459.                                                    <li>
  1460.                                <a href="https://www.thepornlist.net/ai-porn-sites" target="_blank" class="text-white">
  1461.                                    Best AI Porn List
  1462.                                </a>
  1463.                            </li>
  1464.                                                    <li>
  1465.                                <a href="https://pornwhitelist.com/ai-porn-sites" target="_blank" class="text-white">
  1466.                                    Best AI Porn Sites
  1467.                                </a>
  1468.                            </li>
  1469.                                                            </ul>
  1470.            </div>
  1471.        </div>
  1472.    </div>
  1473.    <div class="text-center p-4 text-xs">
  1474.    Current language -
  1475.    <select class="bg-primary text-white cursor-pointer hover:bg-black" id="languageSelect" >
  1476.                    <option selected
  1477.                    class="bg-black text-white"
  1478.                    value="https://aiexotic.com"
  1479.            >English</option>
  1480.                    <option
  1481.                    class="bg-black text-white"
  1482.                    value="/zh"
  1483.            >简体中文</option>
  1484.                    <option
  1485.                    class="bg-black text-white"
  1486.                    value="/es"
  1487.            >Español</option>
  1488.                    <option
  1489.                    class="bg-black text-white"
  1490.                    value="/hi"
  1491.            >हिन्दी</option>
  1492.                    <option
  1493.                    class="bg-black text-white"
  1494.                    value="/ar"
  1495.            >العربية</option>
  1496.                    <option
  1497.                    class="bg-black text-white"
  1498.                    value="/pt"
  1499.            >Português</option>
  1500.                    <option
  1501.                    class="bg-black text-white"
  1502.                    value="/ms"
  1503.            >Bahasa Melayu</option>
  1504.                    <option
  1505.                    class="bg-black text-white"
  1506.                    value="/fr"
  1507.            >Français</option>
  1508.                    <option
  1509.                    class="bg-black text-white"
  1510.                    value="/de"
  1511.            >Deutsch</option>
  1512.                    <option
  1513.                    class="bg-black text-white"
  1514.                    value="/ru"
  1515.            >Русский</option>
  1516.                    <option
  1517.                    class="bg-black text-white"
  1518.                    value="/it"
  1519.            >Italiano</option>
  1520.                    <option
  1521.                    class="bg-black text-white"
  1522.                    value="/ja"
  1523.            >日本語</option>
  1524.            </select>
  1525. </div>
  1526.  
  1527. <script type="text/javascript">
  1528.    document.addEventListener('DOMContentLoaded', () => {
  1529.        const selectElement = document.getElementById('languageSelect');
  1530.  
  1531.        selectElement.addEventListener('change', function() {
  1532.            window.location.href = this.value;
  1533.        });
  1534.    });
  1535. </script>
  1536.  
  1537.        
  1538.    <div class="text-center p-2 text-xs">
  1539.        This site is protected by reCAPTCHA and the Google
  1540.        <a href="https://policies.google.com/privacy">Privacy Policy</a> and
  1541.        <a href="https://policies.google.com/terms">Terms of Service</a> apply.
  1542.    </div>
  1543.    <div class="text-center p-2">
  1544.        Copyright © Aiexotic
  1545.    </div>
  1546. </footer>
  1547.    
  1548.            <link rel="preload" as="style" href="/build/assets/sweetalert2.96f7fa43.css" /><link rel="modulepreload" href="/build/assets/sweetalert2.e895adb1.js" /><link rel="stylesheet" href="/build/assets/sweetalert2.96f7fa43.css" /><script type="module" src="/build/assets/sweetalert2.e895adb1.js"></script>        <script>
  1549.    /**** Livewire Alert Scripts ****/
  1550.    (()=>{var __webpack_modules__={757:(e,t,r)=>{e.exports=r(666)},666:e=>{var t=function(e){"use strict";var t,r=Object.prototype,n=r.hasOwnProperty,o="function"==typeof Symbol?Symbol:{},i=o.iterator||"@@iterator",a=o.asyncIterator||"@@asyncIterator",c=o.toStringTag||"@@toStringTag";function s(e,t,r){return Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{s({},"")}catch(e){s=function(e,t,r){return e[t]=r}}function l(e,t,r,n){var o=t&&t.prototype instanceof y?t:y,i=Object.create(o.prototype),a=new x(n||[]);return i._invoke=function(e,t,r){var n=f;return function(o,i){if(n===p)throw new Error("Generator is already running");if(n===d){if("throw"===o)throw i;return S()}for(r.method=o,r.arg=i;;){var a=r.delegate;if(a){var c=L(a,r);if(c){if(c===h)continue;return c}}if("next"===r.method)r.sent=r._sent=r.arg;else if("throw"===r.method){if(n===f)throw n=d,r.arg;r.dispatchException(r.arg)}else"return"===r.method&&r.abrupt("return",r.arg);n=p;var s=u(e,t,r);if("normal"===s.type){if(n=r.done?d:_,s.arg===h)continue;return{value:s.arg,done:r.done}}"throw"===s.type&&(n=d,r.method="throw",r.arg=s.arg)}}}(e,r,a),i}function u(e,t,r){try{return{type:"normal",arg:e.call(t,r)}}catch(e){return{type:"throw",arg:e}}}e.wrap=l;var f="suspendedStart",_="suspendedYield",p="executing",d="completed",h={};function y(){}function v(){}function m(){}var b={};s(b,i,(function(){return this}));var w=Object.getPrototypeOf,g=w&&w(w(D([])));g&&g!==r&&n.call(g,i)&&(b=g);var O=m.prototype=y.prototype=Object.create(b);function E(e){["next","throw","return"].forEach((function(t){s(e,t,(function(e){return this._invoke(t,e)}))}))}function k(e,t){function r(o,i,a,c){var s=u(e[o],e,i);if("throw"!==s.type){var l=s.arg,f=l.value;return f&&"object"==typeof f&&n.call(f,"__await")?t.resolve(f.__await).then((function(e){r("next",e,a,c)}),(function(e){r("throw",e,a,c)})):t.resolve(f).then((function(e){l.value=e,a(l)}),(function(e){return r("throw",e,a,c)}))}c(s.arg)}var o;this._invoke=function(e,n){function i(){return new t((function(t,o){r(e,n,t,o)}))}return o=o?o.then(i,i):i()}}function L(e,r){var n=e.iterator[r.method];if(n===t){if(r.delegate=null,"throw"===r.method){if(e.iterator.return&&(r.method="return",r.arg=t,L(e,r),"throw"===r.method))return h;r.method="throw",r.arg=new TypeError("The iterator does not provide a 'throw' method")}return h}var o=u(n,e.iterator,r.arg);if("throw"===o.type)return r.method="throw",r.arg=o.arg,r.delegate=null,h;var i=o.arg;return i?i.done?(r[e.resultName]=i.value,r.next=e.nextLoc,"return"!==r.method&&(r.method="next",r.arg=t),r.delegate=null,h):i:(r.method="throw",r.arg=new TypeError("iterator result is not an object"),r.delegate=null,h)}function j(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function P(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function x(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(j,this),this.reset(!0)}function D(e){if(e){var r=e[i];if(r)return r.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var o=-1,a=function r(){for(;++o<e.length;)if(n.call(e,o))return r.value=e[o],r.done=!1,r;return r.value=t,r.done=!0,r};return a.next=a}}return{next:S}}function S(){return{value:t,done:!0}}return v.prototype=m,s(O,"constructor",m),s(m,"constructor",v),v.displayName=s(m,c,"GeneratorFunction"),e.isGeneratorFunction=function(e){var t="function"==typeof e&&e.constructor;return!!t&&(t===v||"GeneratorFunction"===(t.displayName||t.name))},e.mark=function(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,m):(e.__proto__=m,s(e,c,"GeneratorFunction")),e.prototype=Object.create(O),e},e.awrap=function(e){return{__await:e}},E(k.prototype),s(k.prototype,a,(function(){return this})),e.AsyncIterator=k,e.async=function(t,r,n,o,i){void 0===i&&(i=Promise);var a=new k(l(t,r,n,o),i);return e.isGeneratorFunction(r)?a:a.next().then((function(e){return e.done?e.value:a.next()}))},E(O),s(O,c,"Generator"),s(O,i,(function(){return this})),s(O,"toString",(function(){return"[object Generator]"})),e.keys=function(e){var t=[];for(var r in e)t.push(r);return t.reverse(),function r(){for(;t.length;){var n=t.pop();if(n in e)return r.value=n,r.done=!1,r}return r.done=!0,r}},e.values=D,x.prototype={constructor:x,reset:function(e){if(this.prev=0,this.next=0,this.sent=this._sent=t,this.done=!1,this.delegate=null,this.method="next",this.arg=t,this.tryEntries.forEach(P),!e)for(var r in this)"t"===r.charAt(0)&&n.call(this,r)&&!isNaN(+r.slice(1))&&(this[r]=t)},stop:function(){this.done=!0;var e=this.tryEntries[0].completion;if("throw"===e.type)throw e.arg;return this.rval},dispatchException:function(e){if(this.done)throw e;var r=this;function o(n,o){return c.type="throw",c.arg=e,r.next=n,o&&(r.method="next",r.arg=t),!!o}for(var i=this.tryEntries.length-1;i>=0;--i){var a=this.tryEntries[i],c=a.completion;if("root"===a.tryLoc)return o("end");if(a.tryLoc<=this.prev){var s=n.call(a,"catchLoc"),l=n.call(a,"finallyLoc");if(s&&l){if(this.prev<a.catchLoc)return o(a.catchLoc,!0);if(this.prev<a.finallyLoc)return o(a.finallyLoc)}else if(s){if(this.prev<a.catchLoc)return o(a.catchLoc,!0)}else{if(!l)throw new Error("try statement without catch or finally");if(this.prev<a.finallyLoc)return o(a.finallyLoc)}}}},abrupt:function(e,t){for(var r=this.tryEntries.length-1;r>=0;--r){var o=this.tryEntries[r];if(o.tryLoc<=this.prev&&n.call(o,"finallyLoc")&&this.prev<o.finallyLoc){var i=o;break}}i&&("break"===e||"continue"===e)&&i.tryLoc<=t&&t<=i.finallyLoc&&(i=null);var a=i?i.completion:{};return a.type=e,a.arg=t,i?(this.method="next",this.next=i.finallyLoc,h):this.complete(a)},complete:function(e,t){if("throw"===e.type)throw e.arg;return"break"===e.type||"continue"===e.type?this.next=e.arg:"return"===e.type?(this.rval=this.arg=e.arg,this.method="return",this.next="end"):"normal"===e.type&&t&&(this.next=t),h},finish:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.finallyLoc===e)return this.complete(r.completion,r.afterLoc),P(r),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var r=this.tryEntries[t];if(r.tryLoc===e){var n=r.completion;if("throw"===n.type){var o=n.arg;P(r)}return o}}throw new Error("illegal catch attempt")},delegateYield:function(e,r,n){return this.delegate={iterator:D(e),resultName:r,nextLoc:n},"next"===this.method&&(this.arg=t),h}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}},__webpack_module_cache__={};function __webpack_require__(e){var t=__webpack_module_cache__[e];if(void 0!==t)return t.exports;var r=__webpack_module_cache__[e]={exports:{}};return __webpack_modules__[e](r,r.exports,__webpack_require__),r.exports}__webpack_require__.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return __webpack_require__.d(t,{a:t}),t},__webpack_require__.d=(e,t)=>{for(var r in t)__webpack_require__.o(t,r)&&!__webpack_require__.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},__webpack_require__.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var __webpack_exports__={};(()=>{"use strict";var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(757),_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);function ownKeys(e,t){var r=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),r.push.apply(r,n)}return r}function _objectSpread(e){for(var t=1;t<arguments.length;t++){var r=null!=arguments[t]?arguments[t]:{};t%2?ownKeys(Object(r),!0).forEach((function(t){_defineProperty(e,t,r[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(r)):ownKeys(Object(r)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(r,t))}))}return e}function _defineProperty(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function asyncGeneratorStep(e,t,r,n,o,i,a){try{var c=e[i](a),s=c.value}catch(e){return void r(e)}c.done?t(s):Promise.resolve(s).then(n,o)}function _asyncToGenerator(e){return function(){var t=this,r=arguments;return new Promise((function(n,o){var i=e.apply(t,r);function a(e){asyncGeneratorStep(i,n,o,a,c,"next",e)}function c(e){asyncGeneratorStep(i,n,o,a,c,"throw",e)}a(void 0)}))}}function evalCallbacksOptions(options){for(var callbacksKeysAllowed=["allowOutsideClick","allowEscapeKey","allowEnterKey","loaderHtml","inputOptions","inputValidator","preConfirm","preDeny","didClose","didDestroy","didOpen","didRender","willClose","willOpen"],_i=0,_callbacksKeysAllowed=callbacksKeysAllowed;_i<_callbacksKeysAllowed.length;_i++){var callbackKey=_callbacksKeysAllowed[_i];options.hasOwnProperty(callbackKey)&&("string"==typeof options[callbackKey]||options[callbackKey]instanceof String)&&options[callbackKey]&&""!=options[callbackKey].trim()&&(options[callbackKey]=eval(options[callbackKey]))}}function afterAlertInteraction(e){if(e.confirmed)return"self"===e.onConfirmed.component?void Livewire.find(e.onConfirmed.id).emitSelf(e.onConfirmed.listener,e.result):void Livewire.emitTo(e.onConfirmed.component,e.onConfirmed.listener,e.result);if(e.isDenied)return"self"===e.onDenied.component?void Livewire.find(e.onDenied.id).emitSelf(e.onDenied.listener,e.result):void Livewire.emitTo(e.onDenied.component,e.onDenied.listener,e.result);if(e.onProgressFinished&&e.dismiss===Swal.DismissReason.timer)return"self"===e.onProgressFinished.component?void Livewire.find(e.onProgressFinished.id).emitSelf(e.onProgressFinished.listener,e.result):void Livewire.emitTo(e.onProgressFinished.component,e.onProgressFinished.listener,e.result);if(e.onDismissed){if("self"===e.onDismissed.component)return void Livewire.find(e.onDismissed.id).emit(e.onDismissed.listener,e.result);Livewire.emitTo(e.onDismissed.component,e.onDismissed.listener,e.result)}}window.addEventListener("alert",function(){var e=_asyncToGenerator(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark((function e(t){var r,n,o,i,a,c,s,l;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return o=t.detail.message,i=null!==(r=t.detail.type)&&void 0!==r?r:null,a=t.detail.data,c=t.detail.events,evalCallbacksOptions(s=t.detail.options),e.next=8,Swal.fire(_objectSpread({title:o,icon:i},s));case 8:afterAlertInteraction(_objectSpread(_objectSpread(_objectSpread({confirmed:(l=e.sent).isConfirmed,denied:l.isDenied,dismiss:l.dismiss,result:_objectSpread(_objectSpread({},l),{},{data:_objectSpread(_objectSpread({},a),{},{inputAttributes:null!==(n=s.inputAttributes)&&void 0!==n?n:null})})},c),l),s));case 10:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()),window.flashAlert=function(){var e=_asyncToGenerator(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark((function e(t){var r,n,o,i,a,c,s;return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return i=t.events,a=t.events.data,evalCallbacksOptions(c=t.options),e.next=6,Swal.fire(_objectSpread({title:null!==(r=t.message)&&void 0!==r?r:"",icon:null!==(n=t.type)&&void 0!==n?n:null},c));case 6:afterAlertInteraction(_objectSpread(_objectSpread({confirmed:(s=e.sent).isConfirmed,denied:s.isDenied,dismiss:s.dismiss,result:_objectSpread(_objectSpread({},s),{},{data:_objectSpread(_objectSpread({},a),{},{inputAttributes:null!==(o=c.inputAttributes)&&void 0!==o?o:null})})},i),t.options));case 8:case"end":return e.stop()}}),e)})));return function(t){return e.apply(this,arguments)}}()})()})();
  1551. </script>
  1552.  
  1553.            
  1554.        <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.0/moment.min.js"></script>
  1555.    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data.js"></script>
  1556.  
  1557.    <script type="text/javascript">
  1558.        // set for all getElementsByClassName timezone inputs value = moment.tz.guess()
  1559.        var timezoneInputs = document.getElementsByClassName('timezone');
  1560.        for (var i = 0; i < timezoneInputs.length; ++i) {
  1561.            timezoneInputs[i].value = moment.tz.guess();
  1562.        }
  1563.    </script>
  1564.    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.19.0/moment.min.js"></script>
  1565.    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.13/moment-timezone-with-data.js"></script>
  1566.  
  1567.    <script type="text/javascript">
  1568.        // set for all getElementsByClassName timezone inputs value = moment.tz.guess()
  1569.        var timezoneInputs = document.getElementsByClassName('timezone');
  1570.        for (var i = 0; i < timezoneInputs.length; ++i) {
  1571.            timezoneInputs[i].value = moment.tz.guess();
  1572.        }
  1573.    </script>
  1574.        <link rel="modulepreload" href="/build/assets/modal-higher-18.cd33a97b.js" /><script type="module" src="/build/assets/modal-higher-18.cd33a97b.js"></script>    <script defer type="text/javascript">
  1575.    document.addEventListener('alpine:init', () => {
  1576.        Alpine.store('videoSlider', {
  1577.            currentVideo: 0,
  1578.            videoData: [
  1579.                {
  1580.                    src: '/videos/examples/2woman-blowjob-newyork.mp4',
  1581.                    poster: '/videos/examples/2woman-blowjob-newyork.webp'
  1582.                },
  1583.                {
  1584.                    src: '/videos/examples/ass-reverse cowgirl-pool.mp4',
  1585.                    poster: '/videos/examples/ass-reverse cowgirl-pool.webp'
  1586.                },
  1587.                {
  1588.                    src: '/videos/examples/thai-doggy-ocean.mp4',
  1589.                    poster: '/videos/examples/thai-doggy-ocean.webp'
  1590.                },
  1591.                {
  1592.                    src: '/videos/examples/brunette-flashtits-restaurant.mp4',
  1593.                    poster: '/videos/examples/brunette-flashtits-restaurant.webp'
  1594.                },
  1595.                {
  1596.                    src: '/videos/examples/side-missionary-brunette.mp4',
  1597.                    poster: '/videos/examples/side-missionary-brunette.webp'
  1598.                },
  1599.                {
  1600.                    src: '/videos/examples/blonde-titfuck-ahegao-cine.mp4',
  1601.                    poster: '/videos/examples/blonde-titfuck-ahegao-cine.webp'
  1602.                },
  1603.                {
  1604.                    src: '/videos/examples/20yo-topmodel-rubbing-pussy-yacht.mp4',
  1605.                    poster: '/videos/examples/20yo-topmodel-rubbing-pussy-yacht.webp'
  1606.                },
  1607.                {
  1608.                    src: '/videos/examples/blonde-cumshot-forest.mp4',
  1609.                    poster: '/videos/examples/blonde-cumshot-forest.webp'
  1610.                },
  1611.                {
  1612.                    src: '/videos/examples/anal-reverse-cowgirl-in-helicopter.mp4',
  1613.                    poster: '/videos/examples/anal-reverse-cowgirl-in-helicopter.webp'
  1614.                },
  1615.                {
  1616.                    src: '/videos/examples/2-blondes-hot-kissing.mp4',
  1617.                    poster: '/videos/examples/2-blondes-hot-kissing.webp'
  1618.                },
  1619.                {
  1620.                    src: '/videos/examples/panty-peel.mp4',
  1621.                    poster: '/videos/examples/panty-peel.webp'
  1622.                },
  1623.                {
  1624.                    src: '/videos/examples/20yo-deepthroat-fuckmachine.mp4',
  1625.                    poster: '/videos/examples/20yo-deepthroat-fuckmachine.webp'
  1626.                },
  1627.                {
  1628.                    src: '/videos/examples/three-breasts-sex-machine.mp4',
  1629.                    poster: '/videos/examples/three-breasts-sex-machine.webp'
  1630.                },
  1631.                {
  1632.                    src: '/videos/examples/cameltoe-tittydrop-at-supermarket.mp4',
  1633.                    poster: '/videos/examples/cameltoe-tittydrop-at-supermarket.webp'
  1634.                },
  1635.                {
  1636.                    src: '/videos/examples/feet-up-ahegao-pool.mp4',
  1637.                    poster: '/videos/examples/feet-up-ahegao-pool.webp'
  1638.                }
  1639.            ],
  1640.            transitionTimer: null,
  1641.            nextVideoTimer: null,
  1642.            
  1643.            init() {
  1644.                this.startVideoSequence();
  1645.            },
  1646.            
  1647.            startVideoSequence() {
  1648.                // Nettoyer les timers existants pour éviter les appels multiples
  1649.                if (this.transitionTimer) clearTimeout(this.transitionTimer);
  1650.                if (this.nextVideoTimer) clearTimeout(this.nextVideoTimer);
  1651.                
  1652.                // Attendre que la vidéo soit en position
  1653.                this.transitionTimer = setTimeout(() => {
  1654.                    console.log('Transition vers la vidéo', this.currentVideo);
  1655.                    
  1656.                    // Démarrer la lecture de la vidéo actuelle
  1657.                    setTimeout(() => {
  1658.                        // Cibler spécifiquement les vidéos avec l'attribut data-video-state=current
  1659.                        const currentVideo = document.querySelector('video[data-video-state="current"]');
  1660.                        if (currentVideo) {
  1661.                            console.log('Lecture de la vidéo principale');
  1662.                            currentVideo.currentTime = 0;
  1663.                            currentVideo.play();
  1664.                        }
  1665.                        
  1666.                        // Mettre en pause toutes les autres vidéos du slider uniquement
  1667.                        document.querySelectorAll('video[data-video-index]:not([data-video-state="current"])').forEach(video => {
  1668.                            video.pause();
  1669.                        });
  1670.                        
  1671.                        // Passer à la vidéo suivante après un délai
  1672.                        this.nextVideoTimer = setTimeout(() => {
  1673.                            console.log('Passage à la vidéo suivante');
  1674.                            this.nextVideo();
  1675.                        }, 2800); // Attendre 5 secondes avant de passer à la vidéo suivante
  1676.                    }, 100);
  1677.                }, 1000);
  1678.            },
  1679.            
  1680.            nextVideo() {
  1681.                this.currentVideo = (this.currentVideo + 1) % this.videoData.length;
  1682.                this.startVideoSequence();
  1683.            },
  1684.            
  1685.            previousVideo() {
  1686.                this.currentVideo = (this.currentVideo - 1 + this.videoData.length) % this.videoData.length;
  1687.                this.startVideoSequence();
  1688.            },
  1689.            
  1690.            getVideoState(index) {
  1691.                const totalVideos = this.videoData.length;
  1692.                const position = (index - this.currentVideo + totalVideos) % totalVideos;
  1693.                
  1694.                if (position === 0) return 'current';
  1695.                if (position === 1) return 'next';
  1696.                if (position === 2) return 'farNext';
  1697.                if (position === totalVideos - 1) return 'prev';
  1698.                if (position === totalVideos - 2) return 'farPrev';
  1699.                return 'hidden';
  1700.            },
  1701.            
  1702.            handleHover(index) {
  1703.                // Code pour gérer l'événement de survol
  1704.            },
  1705.            
  1706.            handleHoverEnd(index) {
  1707.                // Code pour gérer la fin de l'événement de survol
  1708.            }
  1709.        });
  1710.    });
  1711. </script>
  1712.    <script type="text/javascript">
  1713.        document.addEventListener("DOMContentLoaded", function(){
  1714.            setTimeout(function(){
  1715.                var replacers = document.querySelectorAll('[data-replace]');
  1716.                for(var i=0; i<replacers.length; i++){
  1717.                    let replaceClasses = JSON.parse(replacers[i].dataset.replace.replace(/'/g, '"'));
  1718.                    Object.keys(replaceClasses).forEach(function(key) {
  1719.                        replacers[i].classList.remove(key);
  1720.                        replacers[i].classList.add(replaceClasses[key]);
  1721.                    });
  1722.                }
  1723.            }, 1);
  1724.        });
  1725.    </script>
  1726. </body>
  1727. </html>
  1728.  
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda