1<!DOCTYPE html> 2<html lang="en" class="dark" style="background-color: #000000;"> 3 <head> 4 <meta charset="utf-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1"> 6 <meta name="csrf-token" content="poFNnKE01odzex1uMX8UptP5GRFtYA6AxoAjuhRX"> 7 <meta name="user-authenticated" content="false"> 8 <meta name="user-is-admin" content="false"> 9 10 11 12 13 14 <title>Terms of Service | SinfulX AI</title> 15 16 <!-- SEO Meta Tags --> 17 18 19 20 <meta name="description" content="Terms of Service for SinfulX AI"> 21 22<meta name="author" content="SinfulX AI"> 23<link rel="canonical" href="https://sinfulx.ai/legal/terms"> 24 25 26 27 28<meta http-equiv="content-language" content="en"> 29<meta name="language" content="en"> 30<meta property="dc:language" content="en"> 31 32 33 34 35 <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> 36 37 38 <link rel="alternate" hreflang="en" href="https://sinfulx.ai/legal/terms"> 39 <link rel="alternate" hreflang="x-default" href="https://sinfulx.ai/legal/terms"> 40 41 42 <meta property="og:title" content="Terms of Service | SinfulX AI"> 43 <meta property="og:description" content="Terms of Service for SinfulX AI"> 44 <meta property="og:url" content="https://sinfulx.ai/legal/terms"> 45 <meta property="og:type" content="website"> 46 <meta property="og:site_name" content="SinfulX AI"> 47 <meta property="og:locale" content="en"> 48 <meta property="og:image" content="https://sinfulx.ai/images/sinful-ai-og.jpg"> 49 <meta property="og:image:alt" content="Terms of Service | SinfulX AI"> 50 51 52<meta property="og:image:width" content="1200"> 53<meta property="og:image:height" content="630"> 54<meta property="og:image:type" content="image/jpeg"> 55 56 57 58 59 60 61<meta name="twitter:card" content="summary_large_image"> 62<meta name="twitter:title" content="Terms of Service | SinfulX AI"> 63<meta name="twitter:description" content="Terms of Service for SinfulX AI"> 64<meta name="twitter:image" content="https://sinfulx.ai/images/sinful-ai-og.jpg"> 65<meta name="twitter:site" content="@SinfulX_ai"> 66<meta name="twitter:creator" content="@SinfulX_ai"> 67 68
69<script type="application/ld+json"> 70{"@context":"https://schema.org","@type":"Organization","@id":"https://sinfulx.ai/#organization","name":"NSFW AI Studio","alternateName":"SinfulX AI","url":"https://sinfulx.ai","logo":{"@type":"ImageObject","url":"https://sinfulx.ai/images/sinful-ai-logo.png","width":250,"height":60},"description":"SinfulX AI is the #1 AI porn generator for photorealistic NSFW images and videos. 100+ categories, no-card signup. Create AI porn instantly. 18+ only.","sameAs":["https://twitter.com/SinfulX_ai","https://www.instagram.com/sinfulx.ai"],"contactPoint":{"@type":"ContactPoint","contactType":"Customer Support","email":"[email protected]","availableLanguage":["English"]}} 71</script>
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103<meta http-equiv="X-UA-Compatible" content="IE=edge"> 104<meta name="format-detection" content="telephone=no"> 105 106 107<meta name="theme-color" content="#000000"> 108<meta name="msapplication-TileColor" content="#000000"> 109<meta name="mobile-web-app-capable" content="yes"> 110<meta name="apple-mobile-web-app-capable" content="yes"> 111<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent"> 112 113 114 115 116<meta name="rating" content="adult"> 117 <meta name="age-rating" content="18+"> 118 <meta name="rating" content="adult"> 119 <meta name="RATING" content="RTA-5042-1996-1400-1577-RTA"> 120 <meta http-equiv="PICS-Label" content="(PICS-1.1 "http://www.classify.org/safesurf/" l r (SS~~000 1))"> 121 <meta name="content-warning" content="adult"> 122 <meta name="og:content-rating" content="adult"> 123 124 <meta name="rating" content="RTA-5042-1996-1400-1577-RTA"> 125 126 127<link rel="alternate" type="application/rss+xml" title="SinfulX AI Blog" href="https://sinfulx.ai/feed/rss"> 128<link rel="alternate" type="application/atom+xml" title="SinfulX AI Blog" href="https://sinfulx.ai/feed/atom"> 129 130 131 132 <!-- Favicons --> 133 <link rel="apple-touch-icon" sizes="180x180" href="https://sinfulx.ai/fav/apple-touch-icon.png"> 134 <link rel="icon" type="image/png" sizes="32x32" href="https://sinfulx.ai/fav/favicon-32x32.png"> 135 <link rel="icon" type="image/png" sizes="16x16" href="https://sinfulx.ai/fav/favicon-16x16.png"> 136 <link rel="manifest" href="https://sinfulx.ai/fav/site.webmanifest"> 137 <link rel="shortcut icon" href="https://sinfulx.ai/fav/favicon.ico"> 138 139 <!-- Resource Hints --> 140 <link rel="preload" href="https://sinfulx.ai/fonts/Manrope/Manrope-VariableFont_wght.woff2" as="font" type="font/woff2" crossorigin> 141 <link rel="preconnect" href="https://cdn.sinfulx.ai" crossorigin> 142 <link rel="preconnect" href="https://sinful-ai-public.s3.amazonaws.com" crossorigin> 143 <link rel="dns-prefetch" href="//www.google-analytics.com"> 144 <link rel="dns-prefetch" href="//analytics.ahrefs.com"> 145 <link rel="preload" href="https://sinfulx.ai/images/sinful-ai-logo.png" as="image" type="image/png"> 146 147 <!-- Critical Page Loader CSS (must be inline to prevent FOUC) --> 148 <style> 149 /* NOTE: #main-content is NOT hidden with visibility:hidden â the full-viewport 150 #page-loader overlay already covers content visually. visibility:hidden blocks 151 Chrome from painting the LCP image, adding ~500ms to element render delay. */ 152 153 /* Critical loader styles */ 154 #page-loader { 155 position: fixed; 156 top: 0; 157 left: 0; 158 width: 100vw; 159 height: 100vh; 160 background-color: #000000; 161 z-index: 999999; 162 display: flex; 163 align-items: center; 164 justify-content: center; 165 transition: opacity 0.3s ease, visibility 0.3s ease; 166 } 167 168 #page-loader.home-loading-screen { 169 align-items: flex-start; 170 flex-direction: column; 171 padding-left: 5vw; 172 padding-right: 5vw; 173 transition: opacity 0.8s ease-out, visibility 0.8s ease-out; 174 } 175 176 #page-loader.hidden { 177 opacity: 0; 178 visibility: hidden; 179 pointer-events: none; 180 } 181 182 /* Logo loader animation */ 183 .loader-logo { 184 width: 120px; 185 height: auto; 186 animation: pulse 1.5s ease-in-out infinite; 187 } 188 189 .home-loading-content { 190 display: flex; 191 flex-direction: column; 192 align-items: flex-start; 193 } 194 195 .home-loading-text { 196 color: #ffffff; 197 font-size: 4.5rem; 198 font-weight: 300; 199 line-height: 1.1; 200 margin-bottom: 0.5rem; 201 opacity: 0; 202 text-align: left; 203 transform: translateY(20px); 204 white-space: nowrap; 205 animation: fadeInUp 0.8s ease-out forwards; 206 animation-delay: 0.2s; 207 } 208 209 .home-loading-text.line-3 { 210 display: flex; 211 align-items: baseline; 212 } 213 214 .home-loading-logo { 215 display: inline-block; 216 flex-shrink: 0; 217 height: 80px; 218 width: auto; 219 max-width: 100%; 220 object-fit: contain; 221 object-position: left center; 222 margin-left: 20px; 223 opacity: 0; 224 position: relative; 225 top: 6px; 226 transform: translateY(20px); 227 vertical-align: baseline; 228 animation: fadeInUp 0.8s ease-out forwards; 229 animation-delay: 0.2s; 230 } 231
232 @keyframes pulse { 233 0%, 100% { opacity: 0.6; transform: scale(1); } 234 50% { opacity: 1; transform: scale(1.05); } 235 } 236 237 @keyframes fadeInUp { 238 to { 239 opacity: 1; 240 transform: translateY(0); 241 } 242 } 243 244 body.loading { 245 overflow: hidden; 246 } 247 248 /* Ensure body has black background immediately */ 249 body { 250 background-color: #000000 !important; 251 } 252 253 @media (max-width: 1024px) { 254 #page-loader.home-loading-screen { 255 padding-left: 4vw; 256 padding-right: 4vw; 257 } 258 259 .home-loading-text { 260 font-size: 3.5rem; 261 } 262 263 .home-loading-logo { 264 height: 60px; 265 width: auto; 266 margin-left: 15px; 267 } 268 } 269 270 @media (max-width: 768px) { 271 #page-loader.home-loading-screen { 272 padding-left: 3vw; 273 padding-right: 3vw; 274 } 275 276 .home-loading-text { 277 font-size: 2.5rem; 278 } 279 280 .home-loading-logo { 281 height: 50px; 282 width: auto; 283 margin-left: 12px; 284 } 285 } 286 287 @media (max-width: 480px) { 288 #page-loader.home-loading-screen { 289 padding-left: 2vw; 290 padding-right: 2vw; 291 } 292 293 .home-loading-text { 294 font-size: 2rem; 295 } 296 297 .home-loading-logo { 298 height: 40px; 299 width: auto; 300 margin-left: 8px; 301 } 302 } 303</style> 304 305 <!-- Livewire Configuration (Required for manual bundling) --> 306
306<script data-navigate-once="true">window.livewireScriptConfig = {"csrf":"poFNnKE01odzex1uMX8UptP5GRFtYA6AxoAjuhRX","uri":"https:\/\/sinfulx.ai\/livewire-0bafa650\/update","moduleUrl":"https:\/\/sinfulx.ai\/livewire-0bafa650","progressBar":"","nonce":""};</script>
306 307 <!-- Livewire Styles --><style >[wire\:loading][wire\:loading], [wire\:loading\.delay][wire\:loading\.delay], [wire\:loading\.list-item][wire\:loading\.list-item], [wire\:loading\.inline-block][wire\:loading\.inline-block], [wire\:loading\.inline][wire\:loading\.inline], [wire\:loading\.block][wire\:loading\.block], [wire\:loading\.flex][wire\:loading\.flex], [wire\:loading\.table][wire\:loading\.table], [wire\:loading\.grid][wire\:loading\.grid], [wire\:loading\.inline-flex][wire\:loading\.inline-flex] {display: none;}[wire\:loading\.delay\.none][wire\:loading\.delay\.none], [wire\:loading\.delay\.shortest][wire\:loading\.delay\.shortest], [wire\:loading\.delay\.shorter][wire\:loading\.delay\.shorter], [wire\:loading\.delay\.short][wire\:loading\.delay\.short], [wire\:loading\.delay\.default][wire\:loading\.delay\.default], [wire\:loading\.delay\.long][wire\:loading\.delay\.long], [wire\:loading\.delay\.longer][wire\:loading\.delay\.longer], [wire\:loading\.delay\.longest][wire\:loading\.delay\.longest] {display: none;}[wire\:offline][wire\:offline] {display: none;}[wire\:dirty]:not(textarea):not(input):not(select) {display: none;}:root {--livewire-progress-bar-color: #2299dd;}[x-cloak] {display: none !important;}[wire\:cloak] {display: none !important;}dialog#livewire-error::backdrop {background-color: rgba(0, 0, 0, .6);}</style> 308 309 <!-- Scripts --> 310 <!-- Load CSS asynchronously to prevent render blocking --> 311 312 313 <link rel="preload" href="https://sinfulx.ai/build/assets/app-BXEAP9-H.css" as="style" fetchpriority="high"> 314 <link rel="stylesheet" href="https://sinfulx.ai/build/assets/app-BXEAP9-H.css" media="print" onload="this.media='all'"> 315 <noscript><link rel="stylesheet" href="https://sinfulx.ai/build/assets/app-BXEAP9-H.css"></noscript> 316 317 318
318<script> 319 window.SinfulXI18n = {"home":{"hero_featured":{"alt":{"ai_generated_prefix":"AI-generated","hero_image":"AI-generated hero image"},"stats":{"views":"views"},"user":{"anonymous":"anonymous"},"aria":{"slide_label":"Go to slide :current of :total"}}},"confirm":{"default_title":"Confirm Action","default_message":"Are you sure you want to proceed?","confirm":"Confirm","cancel":"Cancel","are_you_sure":"Are you sure?","delete_title":"Delete","delete":"Delete","delete_message":"Are you sure you want to delete :item? This action cannot be undone.","make_private_title":"Make Private","make_private":"Make Private","make_private_message":"Are you sure you want to remove this from the public gallery?"},"media":{"this_item":"this item","this_image":"this image"},"share":{"default_title":"Check out this AI creation","default_text":"Check out this AI creation on SinfulX!","shared_successfully":"Shared successfully!","link_copied":"Link copied to clipboard!","link_title":"Share Link","close":"Close"},"actions":{"updated_successfully":"Updated successfully","deleted_successfully":"Deleted successfully","removed_public_gallery":"Removed from public gallery","posted_public_gallery":"Your image is now posted on the Public Gallery","shared_pending_approval":"Shared to public gallery! Pending approval.","image_updated_successfully":"Image updated successfully!","already_in_gallery":":type is already in your gallery.","saved_public_pending":":type shared to public gallery for approval!","saved_private":":type saved to your private gallery!","image_made_private":"Image made private","image_deleted_successfully":"Image deleted successfully"},"errors":{"generic":"An error occurred","http_client_unavailable":"HTTP client unavailable","csrf_token_missing":"No CSRF token in response","update_visibility_failed":"Failed to update visibility","delete_media_failed":"Failed to delete media","delete_image_failed":"Failed to delete image","toggle_like_failed":"Failed to toggle like","delete_not_authorized":"Not authorized to delete this file","share_public_failed":"Failed to share :type publicly: :error","too_many_like_attempts":"Too many like attempts. Please wait a moment.","processing_request":"An error occurred while processing your request.","category_name_min":"Category name must be at least 3 characters","too_many_categories":"Too many categories created recently. Please wait.","no_file_url":"No file URL provided","invalid_file_path":"Invalid file path","save_failed":"Failed to save :type: :error","file_not_found_or_not_owned":"File not found or not owned by user"},"reference_picker":{"all_categories":"All Categories","unknown_category":"Unknown Category","untitled":"Untitled","errors":{"load_categories_failed":"Failed to load categories","categories_unavailable":"Unable to load categories at this time.","load_images_failed":"Failed to load images","images_unavailable":"Unable to load images. Please try again."}},"scenarios_dropdown":{"load_failed":"Failed to load scenarios","try_again":"Failed to load scenarios. Please try again."},"session":{"refreshed_retry":"Session refreshed. Please try again."},"generation":{"not_found":"Generation not found","failed":"Generation failed"},"auth":{"create_account_title":"Ready for this?","welcome_back_title":"Welcome back","register_subtitle":"Pick a model. Generate. Private. No card.","login_subtitle":"Pick up where you left off \u2014 it\u0027s still here.","create_account_button":"Sign up free","log_in_button":"Log In","session_expired":"Your session has expired. Please refresh the page and try again.","check_input":"Please check your input and try again.","too_many_attempts":"Too many attempts. Please wait a moment and try again.","registration_error":"An error occurred during registration. Please try again.","login_error":"An error occurred during login. Please try again."},"user":{"refresh_balance_failed":"Failed to refresh balance","tokens_added":"Added :count VIZ tokens","tokens_used":"Used :count VIZ tokens","generation_started":"Generation started","token_purchase":"Token purchase"},"error_handling":{"generic_retry":"An error occurred. Please try again.","login_required":"Please log in to continue.","permission_denied":"You do not have permission to perform this action.","not_found":"The requested resource was not found.","too_many_requests":"Too many requests. Please wait a moment and try again.","server_error":"Server error. Please try again later.","invali
319d_request":"Invalid request. Please check your input and try again.","network_check":"Network error. Please check your connection and try again.","offline_check":"You appear to be offline. Please check your internet connection.","media_failed":"Failed to load :type","hide":"Hide","network_retry":"Network error. Please try again.","offline_short":"You appear to be offline. Please check your connection.","media_retrying":"Some images failed to load. They will be retried automatically.","something_wrong":"Something went wrong. Please try again.","unexpected":"An unexpected error occurred. Please try again."},"accessibility":{"focused_filters":"Focused on gallery filters","focused_grid":"Focused on gallery grid","keyboard_shortcuts":"Keyboard Shortcuts","show_help":"Show this help","focus_filters":"Focus on filters","focus_gallery":"Focus on gallery","close_modal_help":"Close modal\/help","navigate_modal":"Navigate in modal","activate_buttons":"Activate buttons","close":"Close","gallery_filters_search":"Gallery filters and search","gallery_images_videos":"Gallery images and videos"}}; 320 </script>
320 321 322 <link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/app-BqNiwnxc.js" /><link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/feature-gallery-tmdFAizr.js" /><link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/shared-helpers-BfQz8lRr.js" /><link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/bootstrap-B_i2H-En.js" /><link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/vendor-core-BrqHA8J_.js" /><link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/vendor-alpine-CJ7Fuj40.js" /><link rel="modulepreload" as="script" href="https://sinfulx.ai/build/assets/membersPostGateModal-CG1XZRCY.js" />
322<script type="module" src="https://sinfulx.ai/build/assets/app-BqNiwnxc.js" data-navigate-track="reload"></script>
322 323 <!-- Gallery Animations - For gallery pages --> 324 325 <!-- Cookie Consent Styles: load async so the banner CSS does not block public LCP text. --> 326 <link rel="preload" href="https://sinfulx.ai/vendor/devrabiul/laravel-cookie-consent/css/style.css" as="style" fetchpriority="low"> 327 <link rel="stylesheet" href="https://sinfulx.ai/vendor/devrabiul/laravel-cookie-consent/css/style.css" media="print" onload="this.media='all'"> 328 <noscript><link rel="stylesheet" href="https://sinfulx.ai/vendor/devrabiul/laravel-cookie-consent/css/style.css"></noscript> 329 330 331 <!-- Alpine auth store (needs server-side JSON values) --> 332
332<script> 333 document.addEventListener('alpine:init', () => { 334 Alpine.store('auth', { 335 userId: null, 336 isAuthenticated: false }); 337 }); 338 </script>
338 339 340 <!-- Reveal Content Script - Removes loader overlay when CSS is loaded --> 341
341<script> 342 (function() { 343 var isHomeLoader = false; 344 var minimumDelay = isHomeLoader ? 2200 : 0; 345 var removeDelay = isHomeLoader ? 800 : 300; 346 var loaded = false; 347 var minimumElapsed = minimumDelay === 0; 348 349 function removeLoader() { 350 var loader = document.getElementById('page-loader'); 351 if (!loader) return; 352 353 document.body.classList.remove('loading'); 354 loader.classList.add('hidden'); 355 loader.classList.add('loaded'); 356 357 setTimeout(function() { 358 if (loader && loader.parentNode) loader.remove(); 359 }, removeDelay); 360 } 361 362 function revealContent() { 363 if (!loaded || !minimumElapsed) return; 364 removeLoader(); 365 } 366 367 function markLoaded() { 368 loaded = true; 369 revealContent(); 370 } 371 372 if (document.readyState === 'loading') { 373 document.addEventListener('DOMContentLoaded', function() { 374 document.body.classList.add('loading'); 375 }, { once: true }); 376 } else { 377 document.body.classList.add('loading'); 378 } 379 380 if (document.readyState === 'complete' || document.readyState === 'interactive') { 381 markLoaded(); 382 } else { 383 document.addEventListener('DOMContentLoaded', markLoaded, { once: true }); 384 } 385 386 if (minimumDelay > 0) { 387 setTimeout(function() { 388 minimumElapsed = true; 389 revealContent(); 390 }, minimumDelay); 391 } 392 393 setTimeout(removeLoader, isHomeLoader ? 6000 : 3000); 394 })(); 395</script>
395 396 </head> 397 <body class="font-sans antialiased text-gray-200 bg-dark-100" style="background-color: #000000;"> 398 <!-- Skip Link for Accessibility --> 399 <a href="#main-content" class="sr-only focus:not-sr-only focus:absolute focus:top-4 focus:left-4 focus:z-100 focus:px-4 focus:py-2 focus:bg-red-600 focus:text-white focus:rounded-lg focus:outline-none focus:ring-offset-2 focus:ring-offset-black"> 400 Skip to main content 401 </a> 402 403 <!-- Critical Page Loader - Shows immediately, prevents white flash --> 404 <div id="page-loader" class="" role="status" aria-label="Loading"> 405 <img src="https://sinfulx.ai/images/sinful-ai-logo.png" 406 alt="Loading SinfulX AI" 407 width="240" 408 height="52" 409 fetchpriority="auto" 410 decoding="async" 411 class="loader-logo"> 412 </div> 413 414 <!-- Age Disclaimer Modal (must be first - blocks content until verified) --> 415 <dialog x-data="ageDisclaimerModal({ 416 isBot: false, 417 isAuthenticated: false, 418 isNsfwContent: false 419 })" 420 x-ref="dialog" 421 x-init="init()" 422 x-cloak 423 data-age-disclaimer-dialog 424 class="fixed inset-0 z-100 bg-transparent p-0 m-0 max-w-none max-h-none w-screen h-screen border-none" 425 role="dialog" 426 aria-modal="true" 427 aria-labelledby="age-disclaimer-title" 428 @cancel.prevent> 429 430 <div class="fixed inset-0 flex items-center justify-center p-4"> 431 432 <div class="bg-gray-900/95 backdrop-blur-xl border border-white/10 rounded-2xl max-w-md w-full p-8 text-center shadow-2xl"> 433 434 <div class="mb-6"> 435 <img src="https://sinfulx.ai/images/sinful-ai-logo.png" 436 alt="SinfulX AI" 437 width="584" 438 height="126" 439 loading="eager" 440 decoding="async" 441 fetchpriority="low" 442 class="h-10 w-auto mx-auto" 443 onerror="this.style.display='none'"> 444 </div> 445 446 447 <p id="age-disclaimer-title" class="text-2xl font-semibold text-white mb-4"> 448 Too hot for anyone under 18 449 </p> 450 451 <p class="text-gray-300 text-sm leading-relaxed mb-4"> 452 By entering, you confirm that you agree to our 453 <a href="https://sinfulx.ai/legal/terms" target="_blank" rel="noopener" class="text-red-400 hover:text-red-300 underline">Terms of Service</a>, 454 <a href="https://sinfulx.ai/legal/privacy" target="_blank" rel="noopener" class="text-red-400 hover:text-red-300 underline">Privacy Policy</a>, 455 and are at least 18 years old or the age of majority in your jurisdiction. 456 </p> 457 458 <p class="text-gray-400 text-xs leading-relaxed mb-8"> 459 This website contains age-restricted adult content. 460 If you are under 18 years of age, or the age of majority in your jurisdiction, you are not authorized to enter. 461 </p> 462 463 464 <div class="flex flex-col sm:flex-row gap-3 justify-center"> 465 <button type="button" 466 data-age-confirm 467 class="px-8 py-3 bg-red-600 hover:bg-red-500 text-white font-semibold rounded-lg transition-all duration-200 transform hover:scale-[1.02] active:scale-[0.98] focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-gray-900"> 468 I'm 18. Let me in. 469 </button> 470 <button type="button" 471 data-age-leave 472 class="px-8 py-3 bg-transparent border border-white/20 text-gray-300 hover:text-white hover:border-white/40 rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-white/20 focus:ring-offset-2 focus:ring-offset-gray-900"> 473 Leave 474 </button> 475 </div> 476 477 </div> 478 </div> 479</dialog> 480 481<style> 482 dialog[aria-labelledby="age-disclaimer-title"] { 483 opacity: 0; 484 transform: scale(0.95); 485 transition: opacity 0.3s ease-out, transform 0.3s ease-out; 486 } 487 dialog[aria-labelledby="age-disclaimer-title"][open] { 488 opacity: 1; 489 transform: scale(1); 490 } 491 dialog[aria-labelledby="age-disclaimer-title"]::backdrop { 492 background: rgba(0, 0, 0, 1); 493 } 494</style> 495
496<script> 497(function() { 498 if (window.__sxAgeDisclaimerBootstrap) return; 499 window.__sxAgeDisclaimerBootstrap = true; 500 501 const isBot = false; 502 const isAuthenticated = false; 503 const isNsfwContent = false; 504 505 function hasLocalStorage() { 506 try { 507 localStorage.setItem('__sx_test', '__sx_test'); 508 localStorage.removeItem('__sx_test'); 509 return true; 510 } catch (e) { 511 return false; 512 } 513 } 514 515 function isVerified() { 516 return hasLocalStorage() && localStorage.getItem('sx_age_verified') === 'true'; 517 } 518 519 function isNsfwPage() { 520 const path = window.location.pathname; 521 if (path === '/') return true; 522 523 const nsfwPaths = ['/gallery', '/generate', '/generator', '/model', '/blog', '/explore']; 524 return nsfwPaths.some(pattern => path.startsWith(pattern)) || isNsfwContent; 525 } 526 527 function openDialog(dialog) { 528 dialog.removeAttribute('x-cloak'); 529 530 if (dialog.open) return; 531 if (typeof dialog.showModal === 'function') { 532 dialog.showModal(); 533 return; 534 } 535 536 dialog.setAttribute('open', ''); 537 } 538 539 function closeDialog(dialog) { 540 if (typeof dialog.close === 'function') { 541 dialog.close(); 542 return; 543 } 544 545 dialog.removeAttribute('open'); 546 } 547 548 function init() { 549 if (isBot || isAuthenticated || isVerified() || !isNsfwPage()) return; 550 551 const dialog = document.querySelector('[data-age-disclaimer-dialog]'); 552 if (!dialog) return; 553 554 openDialog(dialog); 555 556 dialog.querySelector('[data-age-confirm]')?.addEventListener('click', function() { 557 if (hasLocalStorage()) { 558 localStorage.setItem('sx_age_verified', 'true'); 559 } 560 closeDialog(dialog); 561 }); 562 563 dialog.querySelector('[data-age-leave]')?.addEventListener('click', function() { 564 window.location.href = 'https://www.google.com'; 565 }); 566 } 567 568 if (document.readyState === 'loading') { 569 document.addEventListener('DOMContentLoaded', init, { once: true }); 570 } else { 571 init(); 572 } 573})(); 574</script>
574 575 576 <!-- Translation Notice Banner --> 577 578 <div 579 data-ds-toast 580 role="status" 581 aria-live="polite" 582 aria-relevant="additions" 583 x-data="toastNotifications(5)" 584 x-on:toast.window="addToast($event.detail)" 585 x-on:show-toast.window="addToast($event.detail)" 586 x-on:show-notification.window="addToast($event.detail)" 587 class="fixed z-50 flex flex-col gap-2 w-full max-w-sm pointer-events-none bottom-4 right-4" 588> 589 <template x-for="toast in toasts" :key="toast.id"> 590 <div 591 x-show="toast.visible" 592 x-transition:enter="transform ease-out duration-300" 593 x-transition:enter-start="translate-y-2 opacity-0" 594 x-transition:enter-end="translate-y-0 opacity-100" 595 x-transition:leave="transform ease-in duration-200" 596 x-transition:leave-start="translate-y-0 opacity-100" 597 x-transition:leave-end="translate-y-2 opacity-0" 598 class="flex items-center gap-3 px-4 py-3 rounded-lg shadow-lg backdrop-blur-sm cursor-pointer pointer-events-auto" 599 :class="{ 600 'bg-green-600/90 text-white': toast.type === 'success', 601 'bg-red-600/90 text-white': toast.type === 'error', 602 'bg-yellow-500/90 text-black': toast.type === 'warning', 603 'bg-blue-600/90 text-white': toast.type === 'info', 604 'bg-dark-300/95 text-white border border-dark-400': !['success', 'error', 'warning', 'info'].includes(toast.type) 605 }" 606 @click="removeToast(toast.id)" 607 > 608 <p class="flex-1 text-sm font-medium" x-text="toast.message"></p> 609 <button 610 type="button" 611 @click.stop="removeToast(toast.id)" 612 class="shrink-0 opacity-70 hover:opacity-100 transition-opacity" 613 aria-label="Close notification" 614 > 615 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 616 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/> 617 </svg> 618 </button> 619 </div> 620 </template> 621</div> 622 623 <div x-persist="background-underlay"> 624 <!-- Persistent dark underlay - prevents white flash during Livewire Navigate --> 625 <div class="fixed inset-0 bg-black" style="z-index: -1;" aria-hidden="true"></div> 626 </div> 627 628 <!-- Black background for all pages --> 629 <div class="fixed inset-0 z-0 bg-black"></div> 630 631 <div class="relative z-10 min-h-screen flex flex-col pt-16 lg:pt-20"> 632 <!-- Website Announcement Banner --> 633 634 <div x-data="{ 635 init() { 636 // Initialize user store with server data 637 const userStore = Alpine.store('user'); 638 userStore.init({ 639 id: null, 640 username: '', 641 name: '', 642 email: '', 643 tokenBalance: 0, 644 isAdmin: false, 645 isSubscriber: false 646 }); 647 } 648}" 649x-init="init()"> 650 651<nav class="bg-gray-950/50 backdrop-blur-sm border-b border-red-500/30 z-50 fixed top-0 left-0 right-0" role="navigation" aria-label="Main navigation"> 652 <!-- Primary Navigation Menu --> 653 <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8"> 654 <div class="flex justify-between h-16 lg:h-20"> 655 <div class="flex items-center space-x-8"> 656 <!-- Logo --> 657 <div class="shrink-0 flex items-center"> 658 <a href="https://sinfulx.ai" class="flex items-center logo-link"> 659 <img src="https://sinfulx.ai/images/sinful-ai-logo.png" 660 alt="SinfulX AI - AI Content Generation Platform" 661 width="584" 662 height="126" 663 class="h-9 w-auto transition-colors duration-200 filter brightness-110 lg:h-12" /> 664 </a> 665 </div> 666 </div> 667 668 <!-- Navigation Tabs - Desktop --> 669 <div class="hidden lg:flex lg:items-center lg:space-x-6">
670 <a href="https://sinfulx.ai/explore" class="text-gray-300 hover:text-white transition-colors font-medium">Explore</a> 671 <a href="https://sinfulx.ai/scenarios" class="text-gray-300 hover:text-white transition-colors font-medium">Scenarios</a> 672 <a href="https://sinfulx.ai/blog" class="text-gray-300 hover:text-white transition-colors font-medium">Blog</a> 673 <!-- <a href="https://sinfulx.ai/learning-hub" class="text-gray-300 hover:text-white transition-colors font-medium">Learning</a> --> 674 </div> 675 676 <!-- Right Side: Token Balance + Actions + Account --> 677 <div class="hidden lg:flex lg:items-center lg:space-x-4"> 678 <!-- Guest Authentication Buttons --> 679 <div class="flex items-center gap-4"> 680 <button @click="$dispatch('open-login-modal')" 681 data-auth-modal-trigger="login" 682 type="button" 683 style="touch-action: manipulation; -webkit-tap-highlight-color: transparent;" 684 class="px-6 py-2.5 bg-gray-900/80 backdrop-blur-sm border border-gray-500/80 text-gray-300 rounded-full hover:bg-white hover:text-black hover:border-gray-300 transition-all duration-300 font-medium cursor-pointer shadow-lg hover:shadow-white/20" 685 aria-label="Open login modal"> 686 Login 687 </button> 688 <button @click="$dispatch('open-register-modal')" 689 data-auth-modal-trigger="register" 690 type="button" 691 style="touch-action: manipulation; -webkit-tap-highlight-color: transparent;" 692 class="px-6 py-2.5 bg-red-600/90 backdrop-blur-sm border border-red-500/50 text-white rounded-full hover:bg-red-500 hover:border-red-400 transition-all duration-300 font-medium cursor-pointer shadow-lg hover:shadow-red-500/30 transform hover:scale-[1.02]" 693 aria-label="Open generator modal"> 694 Generate 695 </button> 696 </div> 697 </div> 698 699 <!-- Mobile: Hamburger Menu Button --> 700 <div class="lg:hidden flex items-center"> 701 <button @click="$store.navigation.toggleMobileMenu()" 702 class="flex items-center gap-2 px-3 py-2 rounded-lg text-white hover:bg-white/10 transition-all" 703 :aria-expanded="$store.navigation.mobileMenuOpen.toString()" 704 aria-label="Toggle mobile menu"> 705 <svg class="h-6 w-6" stroke="currentColor" fill="none" viewBox="0 0 24 24"> 706 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" /> 707 </svg> 708 </button> 709 </div> 710 </div> 711 </div> 712 713</nav> 714 715<!-- Mobile Menu Backdrop Overlay --> 716<div x-show="$store.navigation.mobileMenuOpen" 717 x-cloak 718 @click="$store.navigation.closeMobileMenu()" 719 x-transition:enter="transition-opacity ease-out duration-300" 720 x-transition:enter-start="opacity-0" 721 x-transition:enter-end="opacity-100" 722 x-transition:leave="transition-opacity ease-in duration-200" 723 x-transition:leave-start="opacity-100" 724 x-transition:leave-end="opacity-0" 725 class="lg:hidden fixed top-0 inset-x-0 bottom-0 bg-black/80 backdrop-blur-sm z-40" 726 style="display: none;"> 727</div> 728
729<!-- Mobile Menu (Full-Screen Slide-In) --> 730<div x-show="$store.navigation.mobileMenuOpen" 731 x-cloak 732 x-transition:enter="transition ease-out duration-300" 733 x-transition:enter-start="transform translate-x-full" 734 x-transition:enter-end="transform translate-x-0" 735 x-transition:leave="transition ease-in duration-200" 736 x-transition:leave-start="transform translate-x-0" 737 x-transition:leave-end="transform translate-x-full" 738 class="lg:hidden fixed top-0 bottom-0 right-0 w-full sm:w-96 bg-gray-950 border-l border-red-500/30 z-50 flex flex-col" 739 style="display: none;"> 740 741 <!-- Fixed Header with Close Button --> 742 <div class="flex items-center justify-between px-6 py-5 border-b border-gray-800/50 shrink-0"> 743 <a href="https://sinfulx.ai" class="text-red-500 text-xl font-bold">SinfulX AI</a> 744 <button @click="$store.navigation.closeMobileMenu()" class="p-2 rounded-lg hover:bg-white/10 transition-colors"> 745 <svg class="w-6 h-6 text-gray-400 hover:text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 746 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/> 747 </svg> 748 </button> 749 </div> 750 751 <!-- Scrollable Content Area --> 752 <div class="flex-1 overflow-y-auto px-5 py-4"> 753 <!-- Guest Options for Mobile --> 754 <div class="space-y-4"> 755 <!-- Navigation Links for Guests --> 756 <div class="space-y-0.5"> 757 <a href="https://sinfulx.ai" 758 @click="$store.navigation.closeMobileMenu()" 759 class="flex items-center gap-3 px-3 py-3 rounded-lg font-medium transition-colors text-gray-300 hover:bg-white/10 hover:text-white"> 760 <svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 761 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 12l2-2m0 0l7-7 7 7M5 10v10a1 1 0 001 1h3m10-11l2 2m-2-2v10a1 1 0 01-1 1h-3m-6 0a1 1 0 001-1v-4a1 1 0 011-1h2a1 1 0 011 1v4a1 1 0 001 1m-6 0h6"/> 762 </svg> 763 Home 764 </a> 765 766 <a href="https://sinfulx.ai/explore" 767 @click="$store.navigation.closeMobileMenu()" 768 class="flex items-center gap-3 px-3 py-3 rounded-lg font-medium transition-colors text-gray-300 hover:bg-white/10 hover:text-white"> 769 <svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 770 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"/> 771 </svg> 772 Explore 773 </a> 774 775 <a href="https://sinfulx.ai/scenarios" 776 @click="$store.navigation.closeMobileMenu()" 777 class="flex items-center gap-3 px-3 py-3 rounded-lg font-medium transition-colors text-gray-300 hover:bg-white/10 hover:text-white"> 778 <svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 779 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 11H5m14 0a2 2 0 012 2v6a2 2 0 01-2 2H5a2 2 0 01-2-2v-6a2 2 0 012-2m14 0V9a2 2 0 00-2-2M5 11V9a2 2 0 012-2m0 0V5a2 2 0 012-2h6a2 2 0 012 2v2M7 7h10"/> 780 </svg> 781 Scenarios 782 </a> 783 784 <a href="https://sinfulx.ai/blog" 785 @click="$store.navigation.closeMobileMenu()" 786 class="flex items-center gap-3 px-3 py-3 rounded-lg font-medium transition-colors text-gray-300 hover:bg-white/10 hover:text-white"> 787 <svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 788 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 20H5a2 2 0 01-2-2V6a2 2 0 012-2h10a2 2 0 012 2v1m2 13a2 2 0 01-2-2V7m2 13a2 2 0 002-2V9a2 2 0 00-2-2h-2m-4-3H9M7 16h6M7 8h6v4H7V8z"/> 789 </svg> 790 Blog 791 </a> 792 793 <a href="https://sinfulx.ai/legal/affiliates" 794 @click="$store.navigation.closeMobileMenu()" 795 class="flex items-center gap-3 px-3 py-3 rounded-lg font-medium transition-colors text-gray-300 hover:bg-white/10 hover:text-white"> 796 <svg class="w-5 h-5 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 797 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8c-1.657 0-3 .895-3 2s1.343 2 3 2 3 .895 3 2-1.343 2-3 2m0-8c1.11 0 2.08.402 2.599 1M12 8V7m0 1v8m0 0v1m0-1c-1.11 0-2.08-.402-2.599-1M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/> 798 </svg> 799 Affiliate 800 </a> 801 </div> 802 803 <!-- Welcome Card --> 804 <div class="bg-linear-to-br from-red-500/10 to-red-600/10 rounded-xl p-5 border border-red-500/20"> 805 <p class="text-white font-semibold text-lg mb-1">Welcome to SinfulX</p> 806 <p class="text-gray-400 text-sm mb-5">Pick a model. Pick a scene. Generate â private by default.</p> 807 808 <button @click="$store.navigation.closeMobileMenu(); $dispatch('open-login-modal')" 809 data-auth-modal-trigger="login" 810 type="button" 811 style="touch-action: manipulation; -webkit-tap-highlight-color: transparent;" 812 class="flex items-center justify-center gap-2 w-full mb-3 px-4 py-3 bg-white text-black rounded-xl font-medium hover:bg-gray-100 transition-all duration-300 shadow-lg"> 813 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 814 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 16l-4-4m0 0l4-4m-4 4h14m-5 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h7a3 3 0 013 3v1"/> 815 </svg> 816 Login 817 </button> 818 819 <button @click="$store.navigation.closeMobileMenu(); $dispatch('open-register-modal')" 820 data-auth-modal-trigger="register" 821 type="button" 822 style="touch-action: manipulation; -webkit-tap-highlight-color: transparent;" 823 class="flex items-center justify-center gap-2 w-full px-4 py-3 bg-linear-to-r from-red-500 to-red-600 text-white rounded-xl font-medium hover:from-red-600 hover:to-red-700 transition-all duration-300 shadow-lg hover:shadow-red-500/50"> 824 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 825 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 4v16m8-8H4"/> 826 </svg> 827 Create Account 828 </button> 829 </div> 830 </div> 831 </div> 832</div> 833 834<!-- Red line separator for non-home pages --> 835<div class="w-full h-px bg-red-500"></div> 836 837</div> <!-- End Navigation System Wrapper --> 838 839 <div class="flex-1"> 840 <!-- Page Heading --> 841 842 843 844 <!-- Page Content --> 845 <main 846 id="main-content" 847 class="pb-6 pt-6" 848 > 849 <div class="relative min-h-screen bg-black"> 850 <div class="pointer-events-none absolute inset-x-0 -top-32 h-80 bg-[radial-gradient(ellipse_at_top,rgba(220,38,38,0.16),transparent_70%)]" aria-hidden="true"></div> 851 852 <div class="relative max-w-6xl mx-auto px-4 sm:px-6 lg:px-8 py-10 sm:py-14"> 853 <nav class="mb-8" aria-label="Breadcrumb"> 854 <ol class="flex flex-wrap items-center gap-2 text-sm"> 855 <li> 856 <a href="https://sinfulx.ai" class="text-gray-400 hover:text-white transition-colors"> 857 Home 858 </a> 859 </li> 860 <li> 861 <svg class="w-3 h-3 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 862 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> 863 </svg> 864 </li> 865 <li> 866 <a href="https://sinfulx.ai/legal" class="text-gray-400 hover:text-white transition-colors"> 867 Legal 868 </a> 869 </li> 870 <li> 871 <svg class="w-3 h-3 text-gray-600" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 872 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> 873 </svg> 874 </li> 875 <li class="text-white font-medium"> 876 Terms of Service 877 </li> 878 </ol> 879 </nav> 880 881 <header class="mb-8 sm:mb-10"> 882 <div class="flex items-start gap-4 sm:gap-5"> 883 <div class="flex h-14 w-14 sm:h-16 sm:w-16 items-center justify-center rounded-2xl bg-red-500/10 ring-1 ring-red-500/20 shrink-0"> 884 <svg class="w-8 h-8 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 885 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12h6m-6 4h6m2 5H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z"/> 886 </svg> 887 </div> 888 <div class="min-w-0"> 889 <h1 class="text-3xl sm:text-4xl font-bold tracking-tight text-white">Terms of Service</h1> 890 <p class="mt-3 inline-flex items-center gap-2 rounded-full border border-white/10 bg-white/5 px-3 py-1 text-xs sm:text-sm text-gray-400"> 891 <svg class="w-3 h-3 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 892 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"/> 893 </svg>
894 <span>Last updated: June 6, 2025</span> 895 </p> 896 </div> 897 </div> 898 </header> 899 900 <div class="lg:hidden mb-6"> 901 <details class="group rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3"> 902 <summary class="flex cursor-pointer list-none items-center justify-between text-sm font-semibold text-white [&::-webkit-details-marker]:hidden"> 903 <span>On this page</span> 904 <svg class="w-4 h-4 text-gray-500 transition-transform group-open:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 905 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 906 </svg> 907 </summary> 908 <nav class="mt-3 space-y-0.5 border-t border-white/10 pt-3" aria-label="On this page"> 909 <a href="#age" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 910 1. Age Requirement 911 </a> 912 <a href="#nature" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 913 2. Nature of Content 914 </a> 915 <a href="#restrictions" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 916 3. Content Restrictions and User Accountability 917 </a> 918 <a href="#acceptable" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 919 4. Acceptable Use Policy 920 </a> 921 <a href="#payments" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 922 5. Subscriptions & Payments 923 </a> 924 <a href="#ip" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 925 6. Intellectual Property 926 </a> 927 <a href="#ownership" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 928 7. Content Ownership & Licensing 929 </a> 930 <a href="#review" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 931 8. Content Review & Removal 932 </a> 933 <a href="#9-termination-of-access" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 934 9. Termination of Access 935 </a> 936 <a href="#10-indemnity" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 937 10. Indemnity 938 </a> 939 <a href="#11-limitations-of-liability" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 940 11. Limitations of Liability 941 </a> 942 <a href="#12-governing-law" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 943 12. Governing Law 944 </a> 945 <a href="#13-jurisdiction-specific-responsibility" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 946 13. Jurisdiction-Specific Responsibility 947 </a> 948 <a href="#14-modifications-to-terms" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 949 14. Modifications to Terms 950 </a> 951 <a href="#contact" class="block rounded-md px-2 py-1.5 text-sm text-gray-400 hover:bg-white/5 hover:text-red-400 transition-colors"> 952 15. Contact Information 953 </a> 954 </nav> 955 </details> 956 </div> 957 958 <div class="lg:grid lg:grid-cols-[220px_minmax(0,1fr)] lg:gap-10 xl:grid-cols-[240px_minmax(0,1fr)] xl:gap-12"> 959 <aside class="hidden lg:block"> 960 <nav class="sticky top-24" aria-label="On this page"> 961 <p class="mb-3 text-[11px] font-semibold uppercase tracking-[0.16em] text-red-400"> 962 On this page 963 </p> 964 <ol class="space-y-0.5 border-l border-white/10"> 965 <li> 966 <a href="#age" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 967 1. Age Requirement 968 </a> 969 </li> 970 <li> 971 <a href="#nature" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 972 2. Nature of Content 973 </a> 974 </li> 975 <li> 976 <a href="#restrictions" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 977 3. Content Restrictions and User Accountability 978 </a> 979 </li> 980 <li> 981 <a href="#acceptable" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 982 4. Acceptable Use Policy 983 </a> 984 </li> 985 <li> 986 <a href="#payments" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 987 5. Subscriptions & Payments 988 </a> 989 </li> 990 <li> 991 <a href="#ip" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 992 6. Intellectual Property 993 </a> 994 </li> 995 <li> 996 <a href="#ownership" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 997 7. Content Ownership & Licensing 998 </a> 999 </li> 1000 <li> 1001 <a href="#review" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1002 8. Content Review & Removal 1003 </a> 1004 </li> 1005 <li> 1006 <a href="#9-termination-of-access" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1007 9. Termination of Access 1008 </a> 1009 </li> 1010 <li> 1011 <a href="#10-indemnity" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1012 10. Indemnity 1013 </a> 1014 </li> 1015 <li> 1016 <a href="#11-limitations-of-liability" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1017 11. Limitations of Liability 1018 </a> 1019 </li> 1020 <li> 1021 <a href="#12-governing-law" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1022 12. Governing Law 1023 </a> 1024 </li> 1025 <li> 1026 <a href="#13-jurisdiction-specific-responsibility" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1027 13. Jurisdiction-Specific Responsibility 1028 </a> 1029 </li> 1030 <li> 1031 <a href="#14-modifications-to-terms" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1032 14. Modifications to Terms 1033 </a> 1034 </li> 1035 <li> 1036 <a href="#contact" class="block border-l-2 border-transparent -ml-px pl-4 py-1.5 text-sm text-gray-400 hover:border-red-500 hover:text-white transition-colors"> 1037 15. Contact Information 1038 </a> 1039 </li> 1040 </ol> 1041 </nav> 1042 </aside> 1043 1044 <div> 1045 <div class="rounded-2xl border border-white/10 bg-zinc-950/70 shadow-[0_0_0_1px_rgba(255,255,255,0.02)] overflow-hidden"> 1046 <div class="px-5 py-7 sm:px-8 sm:py-10"> 1047 <div class="legal-prose max-w-none"> 1048 <p class="text-gray-300 mb-6"> 1049 Welcome to SinfulX.ai, a digital platform owned and operated by <strong>Teletab Ltd Limited</strong>, registered in Cyprus. By accessing or using our website and services (collectively, the "Service"), you agree to comply with these Terms of Service ("Terms"). If you do not accept these Terms, please refrain from using the Service. 1050 </p> 1051 1052 <h2 id="age">1. Age Requirement</h2> 1053 <div class="not-prose my-6"> 1054 <div class="border rounded-lg bg-red-900/30 border-red-600/50 text-red-200 p-4" 1055 > 1056 <div class="flex items-start gap-3"> 1057 <!-- Icon --> 1058 <div class="shrink-0 text-red-400"> 1059 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1060 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1061 </svg> 1062 </div> 1063 1064 <!-- Content --> 1065 <div class="flex-1 min-w-0"> 1066 <h4 class="font-medium text-sm text-red-400">18+ Only:</h4> 1067 <div class="text-sm mt-1 "> 1068 The Service is intended strictly for individuals who are 18 years or older. By using SinfulX.ai, you affirm that you meet this age requirement. 1069 </div> 1070 </div> 1071 1072 <!-- Dismiss Button --> 1073 </div> 1074 1075 <!-- Optional actions slot --> 1076 </div> 1077 </div> 1078 1079 <h2 id="nature">2. Nature of Content</h2> 1080 <p>SinfulX.ai exclusively generates fictional adult-themed images and videos using artificial intelligence. All content is digitally created; no real individuals are depicted, and no user-uploaded content is accepted. Our AI models are designed with safeguards to prevent the creation of illegal or harmful material, including but not limited to:</p> 1081 <ul class="not-prose my-5 space-y-2"> 1082 <li class="flex items-start gap-3 rounded-xl border border-red-500/15 bg-red-950/20 px-4 py-3"> 1083 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1084 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1085 </svg>
1086 <span class="text-sm text-gray-200">AI-generated child pornography</span> 1087 </li> 1088 <li class="flex items-start gap-3 rounded-xl border border-red-500/15 bg-red-950/20 px-4 py-3"> 1089 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1090 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1091 </svg> 1092 <span class="text-sm text-gray-200">Non-consensual deepfakes</span> 1093 </li> 1094 <li class="flex items-start gap-3 rounded-xl border border-red-500/15 bg-red-950/20 px-4 py-3"> 1095 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1096 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1097 </svg> 1098 <span class="text-sm text-gray-200">Likenesses of real people without legal consent</span> 1099 </li> 1100 </ul> 1101 <div class="not-prose my-6 space-y-3"> 1102 <div class="border rounded-lg bg-blue-900/30 border-blue-600/50 text-blue-200 p-4" 1103 > 1104 <div class="flex items-start gap-3"> 1105 <!-- Icon --> 1106 <div class="shrink-0 text-blue-400"> 1107 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1108 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"/> 1109 </svg> 1110 </div> 1111 1112 <!-- Content --> 1113 <div class="flex-1 min-w-0"> 1114 <h4 class="font-medium text-sm text-blue-400">Fictional Content Disclaimer:</h4> 1115 <div class="text-sm mt-1 "> 1116 All characters, personas, and physical attributes depicted in AI-generated content are entirely fictional. Any resemblance to real persons, living or deceased, is purely coincidental and unintentional. SinfulX.ai does not intentionally create or permit the creation of content depicting identifiable real individuals. 1117 </div> 1118 </div> 1119 1120 <!-- Dismiss Button --> 1121 </div> 1122 1123 <!-- Optional actions slot --> 1124 </div> 1125 <div class="border rounded-lg bg-red-900/30 border-red-600/50 text-red-200 p-4" 1126 > 1127 <div class="flex items-start gap-3"> 1128 <!-- Icon --> 1129 <div class="shrink-0 text-red-400"> 1130 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1131 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1132 </svg> 1133 </div> 1134 1135 <!-- Content --> 1136 <div class="flex-1 min-w-0"> 1137 <h4 class="font-medium text-sm text-red-400">Strict Enforcement:</h4> 1138 <div class="text-sm mt-1 "> 1139 Violation of these restrictions will result in immediate termination of access and may trigger legal reporting obligations. 1140 </div> 1141 </div> 1142 1143 <!-- Dismiss Button --> 1144 </div> 1145 1146 <!-- Optional actions slot --> 1147 </div> 1148 </div> 1149 1150 <h2 id="restrictions">3. Content Restrictions and User Accountability</h2> 1151 <p>SinfulX.ai strictly prohibits the creation, attempted creation, distribution, or promotion of any content that is illegal, obscene, or harmful. This includes but is not limited to:</p> 1152 <ul class="not-prose my-5 space-y-2"> 1153 <li class="flex items-start gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3"> 1154 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1155 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/> 1156 </svg>
1157 <span class="text-sm text-gray-200">Depictions of minors in sexual contexts (whether real, implied, or fictional)</span> 1158 </li> 1159 <li class="flex items-start gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3"> 1160 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1161 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/> 1162 </svg> 1163 <span class="text-sm text-gray-200">Non-consensual or violent sexual content</span> 1164 </li> 1165 <li class="flex items-start gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3"> 1166 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1167 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/> 1168 </svg> 1169 <span class="text-sm text-gray-200">Sexual abuse, torture, or criminal violence</span> 1170 </li> 1171 <li class="flex items-start gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3"> 1172 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1173 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/> 1174 </svg> 1175 <span class="text-sm text-gray-200">Hate-based imagery targeting race, gender, religion, or sexual orientation</span> 1176 </li> 1177 <li class="flex items-start gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-4 py-3"> 1178 <svg class="w-4 h-4 mt-0.5 shrink-0 text-red-400" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1179 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/> 1180 </svg> 1181 <span class="text-sm text-gray-200">Content involving bestiality, necrophilia, or other prohibited acts under international human rights standards</span> 1182 </li> 1183 </ul> 1184 <div class="not-prose my-6"> 1185 <div class="border rounded-lg bg-red-900/30 border-red-600/50 text-red-200 p-4" 1186 > 1187 <div class="flex items-start gap-3"> 1188 <!-- Icon --> 1189 <div class="shrink-0 text-red-400"> 1190 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1191 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1192 </svg> 1193 </div> 1194 1195 <!-- Content --> 1196 <div class="flex-1 min-w-0"> 1197 <h4 class="font-medium text-sm text-red-400">Zero Tolerance:</h4> 1198 <div class="text-sm mt-1 "> 1199 Any attempt to bypass our filters, replicate restricted content, or disseminate such materials - on or off our platform - will result in immediate account termination and may be reported to relevant authorities. 1200 </div> 1201 </div> 1202 1203 <!-- Dismiss Button --> 1204 </div> 1205 1206 <!-- Optional actions slot --> 1207 </div> 1208 </div> 1209 1210 <h2 id="acceptable">4. Acceptable Use Policy</h2> 1211 <p>Users agree not to use the Service for any unlawful, abusive, or malicious purposes. Prohibited activities include, but are not limited to:</p> 1212 <ul> 1213 <li>Attempting to replicate real people without permission</li> 1214 <li>Misusing AI content to harass, defame, or incite violence</li> 1215 <li>Circumventing safety filters built into the system</li> 1216 <li>
1216Interfering with platform operations (e.g., hacking, scraping, denial-of-service)</li> 1217 <li>Generating or distributing content in violation of international laws</li> 1218 </ul> 1219 <p>Any misuse may lead to permanent suspension and potential legal consequences.</p> 1220 <p> 1221 For details on how we collect, use, and protect your personal information, please refer to our 1222 <a href="https://sinfulx.ai/legal/privacy">Privacy Policy</a>. 1223 </p> 1224 1225 <h2 id="payments">5. Subscriptions & Payments</h2> 1226 <div class="not-prose my-6 grid gap-3 sm:grid-cols-2"> 1227 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1228 <h3 class="text-sm font-semibold text-white mb-2">Subscriptions</h3> 1229 <p class="text-sm text-gray-400 leading-relaxed"> 1230 SinfulX.ai offers paid memberships and one-time VIZ packs. Accounts can generate immediately after signup. A paid membership or Starter Pack unlocks the result and adds VIZ for more images and videos. Upgrading to a paid subscription unlocks advanced features and expanded generation capacity. 1231 </p> 1232 </div> 1233 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1234 <h3 class="text-sm font-semibold text-white mb-2">Billing</h3> 1235 <p class="text-sm text-gray-400 leading-relaxed"> 1236 Recurring payments are charged based on your selected subscription plan. It is your responsibility to maintain valid billing information. 1237 </p> 1238 </div> 1239 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1240 <h3 class="text-sm font-semibold text-white mb-2">Cancellation</h3> 1241 <p class="text-sm text-gray-400 leading-relaxed"> 1242 You may cancel your subscription anytime through your account dashboard. Cancellations take effect at the end of the billing period. 1243 </p> 1244 </div> 1245 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1246 <h3 class="text-sm font-semibold text-white mb-2">Refund Policy</h3> 1247 <p class="text-sm text-gray-400 leading-relaxed"> 1248 Our refund policy is outlined separately and forms part of these Terms. Refer to our 1249 <a href="https://sinfulx.ai/legal/refund" class="text-red-400 hover:text-red-300 hover:underline underline-offset-2">Refund Policy</a> for details. 1250 </p> 1251 </div> 1252 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1253 <h3 class="text-sm font-semibold text-white mb-2">Fee Adjustments</h3> 1254 <p class="text-sm text-gray-400 leading-relaxed"> 1255 We may update our pricing or introduce new features with additional costs. You will be notified in advance, and ongoing use constitutes acceptance. 1256 </p> 1257 </div> 1258 </div> 1259 1260 <h2 id="ip">6. Intellectual Property</h2> 1261 <div class="not-prose my-6 grid gap-3 sm:grid-cols-2"> 1262 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1263 <h3 class="text-sm font-semibold text-white mb-2">Service Content</h3> 1264 <p class="text-sm text-gray-400 leading-relaxed">All platform-generated assets, design elements, and system logic are the intellectual property of SinfulX.ai or its licensors. Use of open-source models is governed by their original licenses (e.g., CreativeML Open RAIL-M), and our modifications are proprietary.</p> 1265 </div> 1266 <div class="rounded-xl border border-white/10 bg-white/[0.03] p-4"> 1267 <h3 class="text-sm font-semibold text-white mb-2">User Prompts</h3> 1268 <p class="text-sm text-gray-400 leading-relaxed">While you may submit text prompts to generate AI content, no uploaded media is accepted. Any prompts you enter are retained anonymously for platform improvement.</p> 1269 </div> 1270 </div> 1271 1272 <h2 id="ownership">7. Content Ownership & Licensing</h2> 1273 <p>You retain any rights associated with prompts you enter. However, by using the Service, you grant SinfulX.ai a non-exclusive, royalty-free license to use, adapt, and display resulting content for operational and marketing purposes.</p> 1274 <h3>Intellectual Property Ownership and Usage Rights</h3> 1275 <p>All AI-generated artwork, images, and related content ("AI Artwork") created, generated, or otherwise produced on the SinfulX platform shall be the sole and exclusive property of SinfulX. By using the Service, the user irrevocably assigns and transfers to SinfulX all rights, title, and interest in and to the AI Artwork, including all copyright and intellectual property rights therein.</p> 1276 <p>
1276SinfulX shall have the unrestricted right to use, reproduce, modify, display, distribute, publish, or otherwise exploit the AI Artwork in any form and on any media, including but not limited to social media platforms, websites, marketing materials, and promotional content, without further notice or compensation to the user.</p> 1277 <p>The user acknowledges and agrees that no ownership rights or royalties shall arise from the creation, publication, or use of such AI Artwork on the platform.</p> 1278 1279 <h2 id="review">8. Content Review & Removal</h2> 1280 <p>Although users do not upload content, you may report any AI-generated output you believe violates ethical or legal standards. We will review all complaints promptly.</p> 1281 <p>Our team reserves the right to:</p> 1282 <ul> 1283 <li>Restrict or remove generated content</li> 1284 <li>Suspend user access</li> 1285 <li>Comply with regulatory authorities or valid legal requests</li> 1286 </ul> 1287 <p> 1288 See our 1289 <a href="https://sinfulx.ai/legal/content-removal">Content Removal Policy</a> 1290 and 1291 <a href="https://sinfulx.ai/legal/dmca">DMCA Takedown Policy</a> 1292 for detailed procedures regarding copyright or likeness-based content removal. 1293 </p> 1294 1295 <h2 id="9-termination-of-access">9. Termination of Access</h2> 1296 <p>SinfulX.ai may, at its sole discretion, terminate your access to the Service at any time, with or without cause or notice. Reasons may include violations of these Terms, legal concerns, or operational necessity.</p> 1297 <p>You may also terminate your account at any time via your dashboard. Following termination, certain clauses (e.g., liability limitations, indemnification) will continue to apply.</p> 1298 <h2 id="10-indemnity">10. Indemnity</h2> 1299 <p>You agree to defend and indemnify SinfulX.ai, its affiliates, and personnel from any claims, damages, or expenses arising out of your use of the Service, breach of these Terms, or violation of applicable laws or rights.</p> 1300 <h2 id="11-limitations-of-liability">11. Limitations of Liability</h2> 1301 <div class="not-prose my-6"> 1302 <div class="border rounded-lg bg-yellow-900/30 border-yellow-600/50 text-yellow-200 p-4" 1303 > 1304 <div class="flex items-start gap-3"> 1305 <!-- Icon --> 1306 <div class="shrink-0 text-yellow-400"> 1307 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1308 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"/> 1309 </svg> 1310 </div> 1311 1312 <!-- Content --> 1313 <div class="flex-1 min-w-0"> 1314 <h4 class="font-medium text-sm text-yellow-400">Disclaimer:</h4> 1315 <div class="text-sm mt-1 "> 1316 <p>SinfulX.ai disclaims all liability for indirect or consequential damages related to your use of the platform. We are not liable for psychological, emotional, reputational, or legal outcomes resulting from interaction with generated content. Use the platform at your own discretion and risk.</p> 1317 </div> 1318 </div> 1319 1320 <!-- Dismiss Button --> 1321 </div> 1322 1323 <!-- Optional actions slot --> 1324 </div> 1325 </div> 1326 <h2 id="12-governing-law">12. Governing Law</h2> 1327 <p>These Terms are governed by the laws of Cyprus, without reference to conflict-of-law principles. All disputes must be resolved
1327in the courts located in Cyprus.</p> 1328 <h2 id="13-jurisdiction-specific-responsibility">13. Jurisdiction-Specific Responsibility</h2> 1329 <div class="not-prose my-6"> 1330 <div class="border rounded-lg bg-red-900/30 border-red-600/50 text-red-200 p-4" 1331 > 1332 <div class="flex items-start gap-3"> 1333 <!-- Icon --> 1334 <div class="shrink-0 text-red-400"> 1335 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1336 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 14l2-2m0 0l2-2m-2 2l-2-2m2 2l2 2m7-2a9 9 0 11-18 0 9 9 0 0118 0z"/> 1337 </svg> 1338 </div> 1339 1340 <!-- Content --> 1341 <div class="flex-1 min-w-0"> 1342 <h4 class="font-medium text-sm text-red-400">User Responsibility:</h4> 1343 <div class="text-sm mt-1 "> 1344 <p>While SinfulX.ai operates globally as a digital service, we cannot ensure compliance with the legal definitions of obscenity or content restrictions in every jurisdiction. As a user, you are solely responsible for ensuring that your use of the Service aligns with the laws and community standards of the country or region from which you access the platform.</p> 1345 <p class="mt-2">By using SinfulX.ai, you agree not to use the Service to generate or access any content that would be considered unlawful or obscene under the applicable laws in your location. We disclaim any liability for user violations of regional content laws or obscenity statutes.</p> 1346 </div> 1347 </div> 1348 1349 <!-- Dismiss Button --> 1350 </div> 1351 1352 <!-- Optional actions slot --> 1353 </div> 1354 </div> 1355 <h2 id="14-modifications-to-terms">14. Modifications to Terms</h2> 1356 <p>We reserve the right to amend these Terms at any time. Material changes will be announced via the Service or by email. Continued use after changes indicates your acceptance.</p> 1357 1358 <h2 id="contact">15. Contact Information</h2> 1359 <p> 1360 This Terms of Service is supplemented by our 1361 <a href="https://sinfulx.ai/legal/privacy">Privacy Policy</a>, 1362 <a href="https://sinfulx.ai/legal/refund">Refund Policy</a>, 1363 <a href="https://sinfulx.ai/legal/dmca">DMCA Takedown Policy</a>, 1364 and 1365 <a href="https://sinfulx.ai/legal/content-removal">Content Removal Policy</a>, all of which form part of your agreement with us when using SinfulX.ai. 1366 </p> 1367 <div class="not-prose mt-4 rounded-2xl border border-red-500/20 bg-linear-to-br from-red-600/10 to-transparent p-5 sm:p-6"> 1368 <div class="flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between"> 1369 <p class="text-sm sm:text-base text-gray-300 leading-relaxed"> 1370 For questions or concerns regarding these Terms, contact us at: 1371 </p> 1372 <a href="mailto:[email protected]" class="inline-flex shrink-0 items-center justify-center gap-2 rounded-lg bg-red-600 px-4 py-2.5 text-sm font-medium text-white hover:bg-red-700 transition-colors"> 1373 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1374 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/> 1375 </svg> 1376 [email protected] 1377 </a> 1378 </div> 1379 </div> 1380 </div> 1381 </div> 1382 </div> 1383 1384 <div class="mt-6 grid grid-cols-1 sm:grid-cols-2 gap-3"> 1385 <span class="hidden sm:block"></span> 1386 1387 <a href="https://sinfulx.ai/legal/privacy" 1388 class="group flex items-center justify-end gap-3 rounded-xl border border-white/10 bg-white/[0.03] px-4 py-4 hover:border-red-500/40 hover:bg-white/[0.05] transition-colors sm:text-right">
1389 <span class="min-w-0 order-2 sm:order-1"> 1390 <span class="block text-[11px] uppercase tracking-wider text-gray-500">Next</span> 1391 <span class="block truncate text-sm font-medium text-white group-hover:text-red-400 transition-colors">Privacy Policy</span> 1392 </span> 1393 <span class="flex h-9 w-9 items-center justify-center rounded-lg bg-white/5 text-gray-400 group-hover:text-red-400 transition-colors order-1 sm:order-2"> 1394 <svg class="w-4 h-4 transition-transform group-hover:translate-x-0.5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1395 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/> 1396 </svg> 1397 </span> 1398 </a> 1399 </div> 1400 1401 <div class="mt-8 text-center"> 1402 <a href="https://sinfulx.ai/legal" 1403 class="inline-flex items-center text-sm text-gray-400 hover:text-white transition-colors"> 1404 <svg class="w-3 h-3 mr-1" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1405 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 19l-7-7 7-7"/> 1406 </svg> 1407 Back to Legal Hub 1408 </a> 1409 </div> 1410 </div> 1411 </div> 1412 </div> 1413</div> 1414 </main> 1415 </div> 1416 1417 <!-- Footer --> 1418 <footer class="mt-auto bg-linear-to-t from-dark-200/20 to-transparent"> 1419 <div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8"> 1420 <!-- Quick Actions Bar --> 1421 <div class="flex flex-wrap items-center justify-between gap-4 mb-6 pb-6 border-b border-gray-800/50"> 1422 <div class="flex flex-wrap items-center gap-4 lg:gap-6"> 1423 <a href="https://sinfulx.ai/explore" class="text-sm text-gray-400 hover:text-red-500 transition-colors duration-200 flex items-center gap-2"> 1424 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 1425 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16m-2-2l1.586-1.586a2 2 0 012.828 0L20 14m-6-6h.01M6 20h12a2 2 0 002-2V6a2 2 0 00-2-2H6a2 2 0 00-2 2v12a2 2 0 002 2z"></path> 1426 </svg> 1427 NSFW AI Explore 1428 </a> 1429 <a href="https://sinfulx.ai/learning-hub" class="text-sm text-gray-400 hover:text-red-500 transition-colors duration-200 flex items-center gap-2"> 1430 <svg class="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 1431 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"></path> 1432 </svg> 1433 NSFW AI Help Center 1434 </a> 1435 <a href="https://sinfulx.ai/subscription" rel="nofollow" class="text-sm text-gray-400 hover:text-red-500 transition-colors duration-200"> 1436 NSFW AI Pricing 1437 </a> 1438 </div> 1439 1440 <div class="w-full md:w-auto flex justify-center md:justify-end mt-4 md:mt-0"> 1441 <img src="https://sinfulx.ai/images/AC_award_2026.png" 1442 alt="AC Award 2026" 1443 width="170" 1444 height="120" 1445 class="h-30 w-auto object-contain opacity-90" 1446 loading="lazy"> 1447 </div> 1448 </div> 1449 1450 <!-- Popular Pages Bar --> 1451 <div class="mb-8 pb-6 border-b border-gray-800/50"> 1452 <p class="text-xs font-bold text-gray-500 uppercase tracking-wider mb-3">Popular Pages</p> 1453 <div class="flex flex-wrap gap-2"> 1454 <a href="https://sinfulx.ai/ai-porn-generator" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI Porn Generator</a> 1455 <a href="https://sinfulx.ai/ai-porn-gallery" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI Porn Gallery</a> 1456 <a href="https://sinfulx.ai/nsfw-ai" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">NSFW AI</a> 1457 <a href="https://sinfulx.ai/ai-porn-maker" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI Porn Maker</a> 1458 <a href="https://sinfulx.ai/free-ai-porn-generator" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">Free AI Porn Generator</a> 1459 <a href="https://sinfulx.ai/uncensored-ai" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">Uncensored AI</a> 1460 <a href="https://sinfulx.ai/best-ai-porn" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">Best AI Porn</a> 1461 <a href="https://sinfulx.ai/ai-blowjob" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI Blowjob</a> 1462 <a href="https://sinfulx.ai/ai-cumshot" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI Cumshot</a> 1463 <a href="https://sinfulx.ai/ai-milf" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI MILF</a> 1464 <a href="https://sinfulx.ai/ai-porn-video-generator" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">AI Porn Video Generator</a> 1465 <a href="https://sinfulx.ai/nude-ai-generator" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">Nude AI Generator</a> 1466 <a href="https://sinfulx.ai/blog" class="text-xs px-3 py-1 bg-gray-800 rounded-full text-gray-400 hover:text-red-400 hover:bg-gray-700 transition-colors">How-To Guides</a> 1467 </div> 1468 </div> 1469 1470 <!-- Main Links Grid --> 1471 <div class="grid grid-cols-2 md:grid-cols-6 gap-6 mb-8"> 1472 <!-- Products --> 1473 <div> 1474 <p class="text-sm font-bold text-white uppercase tracking-wider mb-3">Products</p> 1475 <ul class="space-y-2"> 1476 <li><a href="https://sinfulx.ai/models" class="text-sm text-white hover:text-red-500 transition-colors duration-200">NSFW AI Image Generator</a></li> 1477 <li>
1477<a href="https://sinfulx.ai/explore" class="text-sm text-white hover:text-red-500 transition-colors duration-200">NSFW AI Explore</a></li> 1478 <li><a href="https://sinfulx.ai/scenarios" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Scenarios</a></li> 1479 </ul> 1480 </div> 1481 1482 <!-- Company --> 1483 <div> 1484 <p class="text-sm font-bold text-white uppercase tracking-wider mb-3">Company</p> 1485 <ul class="space-y-2"> 1486 <li><a href="https://sinfulx.ai/models" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Model Gallery</a></li> 1487 <li><a href="https://sinfulx.ai/blog" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Blog</a></li> 1488 <li><a href="https://sinfulx.ai/about" class="text-sm text-white hover:text-red-500 transition-colors duration-200">About SinfulX</a></li> 1489 <li><a href="https://sinfulx.ai/authors/sinfulx-editorial" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Editorial Team</a></li> 1490 <li><a href="https://sinfulx.ai/subscription" rel="nofollow" class="text-sm text-white hover:text-red-500 transition-colors duration-200">NSFW AI Pricing</a></li> 1491 <li><a href="https://sinfulx.ai/learning-hub" class="text-sm text-white hover:text-red-500 transition-colors duration-200">NSFW AI Studio Wiki</a></li> 1492 <li><a href="https://sinfulx.ai/legal/affiliates" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Affiliates</a></li> 1493 </ul> 1494 </div> 1495 1496 <!-- Content --> 1497 <div> 1498 <p class="text-sm font-bold text-white uppercase tracking-wider mb-3">Content</p> 1499 <ul class="space-y-2"> 1500 <li><a href="https://sinfulx.ai/blog" class="text-sm text-white hover:text-red-500 transition-colors duration-200">All Categories</a></li> 1501 <li><a href="https://sinfulx.ai/blog" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Generators</a></li> 1502 <li><a href="https://sinfulx.ai/models" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Models</a></li> 1503 <li><a href="https://sinfulx.ai/blog" class="text-sm text-white hover:text-red-500 transition-colors duration-200">How-To Guides</a></li> 1504 <li><a href="https://sinfulx.ai/blog" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Content Hubs</a></li> 1505 <li><a href="https://sinfulx.ai/sitemap" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Sitemap</a></li> 1506 </ul> 1507 </div> 1508 1509 <!-- Top Categories --> 1510 <div> 1511 <p class="text-sm font-bold text-white uppercase tracking-wider mb-3">Top Categories</p> 1512 <ul class="space-y-2"> 1513 <li><a href="https://sinfulx.ai/ai-blowjob" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Blowjob</a></li> 1514 <li><a href="https://sinfulx.ai/ai-trans" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Trans</a></li> 1515 <li><a href="https://sinfulx.ai/ai-cumshot" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Cumshot</a></li> 1516 <li><a href="https://sinfulx.ai/ai-rimming" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Rimming</a></li> 1517 <li><a href="https://sinfulx.ai/ai-big-tits" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Big Tits</a></li> 1518 <li><a href="https://sinfulx.ai/ai-anal" class="text-sm text-white hover:text-red-500 transition-colors duration-200">
1518AI Anal</a></li> 1519 <li><a href="https://sinfulx.ai/ai-milf" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI MILF</a></li> 1520 <li><a href="https://sinfulx.ai/ai-lesbian-porn" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Lesbian</a></li> 1521 <li><a href="https://sinfulx.ai/ai-hentai" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Hentai</a></li> 1522 <li><a href="https://sinfulx.ai/ai-jerk-off" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI Jerk Off</a></li> 1523 </ul> 1524 </div> 1525 1526 <!-- Legal --> 1527 <div> 1528 <p class="text-sm font-bold text-white uppercase tracking-wider mb-3">Legal</p> 1529 <ul class="space-y-2"> 1530 <li><a href="https://sinfulx.ai/legal/terms" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Terms of Service</a></li> 1531 <li><a href="https://sinfulx.ai/legal/privacy" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Privacy Policy</a></li> 1532 <li><a href="https://sinfulx.ai/legal/gdpr" class="text-sm text-white hover:text-red-500 transition-colors duration-200">GDPR Compliance</a></li> 1533 <li><a href="https://sinfulx.ai/legal/refund" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Refund Policy</a></li> 1534 </ul> 1535 </div> 1536 1537 <!-- Policies --> 1538 <div> 1539 <p class="text-sm font-bold text-white uppercase tracking-wider mb-3">Policies</p> 1540 <ul class="space-y-2"> 1541 <li><a href="https://sinfulx.ai/ai-use-disclosure" class="text-sm text-white hover:text-red-500 transition-colors duration-200">AI-Use Disclosure</a></li> 1542 <li><a href="https://sinfulx.ai/trust-safety-consent-age" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Trust & Safety</a></li> 1543 <li><a href="https://sinfulx.ai/legal/content-removal" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Content Removal</a></li> 1544 <li><a href="https://sinfulx.ai/legal/dmca" class="text-sm text-white hover:text-red-500 transition-colors duration-200">DMCA Policy</a></li> 1545 <li><a href="https://sinfulx.ai/legal/report" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Report Content</a></li> 1546 <li><a href="https://sinfulx.ai/legal/contact" class="text-sm text-white hover:text-red-500 transition-colors duration-200">Contact Support</a></li> 1547 </ul> 1548 </div> 1549 </div> 1550 1551 <!-- Bottom Bar --> 1552 <div class="border-t border-gray-800 pt-6"> 1553 <div class="flex flex-col lg:flex-row lg:items-center lg:justify-between gap-5"> 1554 1555 <div class="flex flex-col gap-3 min-w-0"> 1556 <p class="text-sm text-gray-400"> 1557 © 2026 SinfulX AI, Inc. 1558 </p> 1559 <nav class="flex flex-wrap items-center gap-x-3 gap-y-2 text-sm" aria-label="Legal"> 1560 <a href="https://sinfulx.ai/legal/terms" class="text-gray-300 hover:text-red-400 transition-colors">Terms</a> 1561 <span class="text-gray-700 select-none" aria-hidden="true">·</span> 1562 <a href="https://sinfulx.ai/legal/privacy" class="text-gray-300 hover:text-red-400 transition-colors">Privacy</a>
1563 <span class="text-gray-700 select-none" aria-hidden="true">·</span> 1564 <a href="https://sinfulx.ai/trust-safety-consent-age" class="text-gray-300 hover:text-red-400 transition-colors">Trust & Safety</a> 1565 <span class="text-gray-700 select-none" aria-hidden="true">·</span> 1566 <a href="https://sinfulx.ai/security-policy" class="text-gray-300 hover:text-red-400 transition-colors">Security</a> 1567 <span class="text-gray-700 select-none" aria-hidden="true">·</span> 1568 <a href="https://sinfulx.ai/sitemap" class="text-gray-300 hover:text-red-400 transition-colors">Sitemap</a> 1569 </nav> 1570 <p class="text-xs text-gray-500"> 1571 <span>Company Reg HE 477740</span> 1572 <span class="mx-2 text-gray-700" aria-hidden="true">·</span> 1573 <span>18+ Only.</span> 1574 </p> 1575 </div> 1576 1577 <div class="flex items-center gap-3 shrink-0"> 1578 <div class="language-switcher relative" x-data="languageSwitcher()" x-cloak> 1579 <button 1580 type="button" 1581 @click="toggleDropdown()" 1582 @keydown.escape="closeDropdown()" 1583 class="language-switcher-button flex items-center gap-2 px-2 py-1 text-xs bg-transparent border border-gray-700 hover:border-red-500/40 hover:text-red-400 rounded-lg transition-all duration-200 focus:outline-none focus:ring-2 focus:ring-red-500 focus:ring-offset-2 focus:ring-offset-gray-900 text-gray-300" 1584 :class="{ 'ring-2 ring-red-500': isOpen }" 1585 aria-haspopup="true" 1586 :aria-expanded="isOpen" 1587 aria-label="Language switcher" 1588 > 1589 <span class="font-medium"> 1590 English 1591 </span> 1592 <svg class="w-4 h-4 text-gray-400 transition-transform duration-200" 1593 :class="{ 'rotate-180': isOpen }" 1594 fill="none" 1595 stroke="currentColor"
1596 viewBox="0 0 24 24" 1597 aria-hidden="true"> 1598 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"></path> 1599 </svg> 1600 </button> 1601 1602 <div 1603 x-show="isOpen" 1604 x-transition:enter="transition ease-out duration-100" 1605 x-transition:enter-start="transform opacity-0 scale-95" 1606 x-transition:enter-end="transform opacity-100 scale-100" 1607 x-transition:leave="transition ease-in duration-75" 1608 x-transition:leave-start="transform opacity-100 scale-100" 1609 x-transition:leave-end="transform opacity-0 scale-95" 1610 @click.away="closeDropdown()" 1611 class="language-dropdown absolute bottom-full mb-2 w-56 right-0 bg-gray-800 border border-gray-700 rounded-lg shadow-xl z-50 overflow-hidden" 1612 role="menu" 1613 aria-orientation="vertical" 1614 style="display: none;" 1615 > 1616 <a 1617 href="https://sinfulx.ai/language/en" 1618 class="language-option flex items-center gap-3 px-4 py-3 hover:bg-gray-700 transition-colors duration-150 bg-gray-700/60 border-b border-gray-700" 1619 role="menuitem" 1620 hreflang="en" 1621 aria-current="true" > 1622 <div class="flex-1 min-w-0"> 1623 <div class="text-sm font-medium text-white truncate"> 1624 English 1625 </div> 1626 <div class="text-xs text-gray-400 truncate"> 1627 English 1628 </div> 1629 </div> 1630 <svg class="w-4 h-4 text-red-400 shrink-0" fill="none" stroke="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 1631 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 13l4 4L19 7"></path> 1632 </svg> 1633 </a> 1634 <a 1635 href="https://sinfulx.ai/language/es" 1636 class="language-option flex items-center gap-3 px-4 py-3 hover:bg-gray-700 transition-colors duration-150 border-b border-gray-700" 1637 role="menuitem" 1638 hreflang="es" 1639 > 1640 <div class="flex-1 min-w-0"> 1641 <div class="text-sm font-medium text-white truncate"> 1642 Español 1643 </div> 1644 <div class="text-xs text-gray-400 truncate"> 1645 Español 1646 </div> 1647 </div> 1648 </a> 1649 <a 1650 href="https://sinfulx.ai/language/fr" 1651 class="language-option flex items-center gap-3 px-4 py-3 hover:bg-gray-700 transition-colors duration-150 border-b border-gray-700" 1652 role="menuitem" 1653 hreflang="fr" 1654 > 1655 <div class="flex-1 min-w-0"> 1656 <div class="text-sm font-medium text-white truncate"> 1657 Français 1658 </div> 1659 <div class="text-xs text-gray-400 truncate"> 1660 Français 1661 </div> 1662 </div> 1663 </a> 1664 <a 1665 href="https://sinfulx.ai/language/de" 1666 class="language-option flex items-center gap-3 px-4 py-3 hover:bg-gray-700 transition-colors duration-150 border-b border-gray-700" 1667 role="menuitem" 1668 hreflang="de" 1669 > 1670 <div class="flex-1 min-w-0"> 1671 <div class="text-sm font-medium text-white truncate"> 1672 Deutsch 1673 </div> 1674 <div class="text-xs text-gray-400 truncate"> 1675 Deutsch 1676 </div> 1677 </div> 1678 </a> 1679 <a 1680 href="https://sinfulx.ai/language/it" 1681 class="language-option flex items-center gap-3 px-4 py-3 hover:bg-gray-700 transition-colors duration-150 border-b border-gray-700" 1682 role="menuitem" 1683 hreflang="it" 1684 > 1685 <div class="flex-1 min-w-0"> 1686 <div class="text-sm font-medium text-white truncate"> 1687 Italiano 1688 </div> 1689 <div class="text-xs text-gray-400 truncate"> 1690 Italiano 1691 </div> 1692 </div> 1693 </a> 1694 <a 1695 href="https://sinfulx.ai/language/pt" 1696 class="language-option flex items-center gap-3 px-4 py-3 hover:bg-gray-700 transition-colors duration-150 " 1697 role="menuitem" 1698 hreflang="pt" 1699 > 1700 <div class="flex-1 min-w-0"> 1701 <div class="text-sm font-medium text-white truncate"> 1702 Português 1703 </div> 1704 <div class="text-xs text-gray-400 truncate"> 1705 Português 1706 </div> 1707 </div> 1708 </a> 1709 1710 </div> 1711 </div> 1712 1713 <a href="https://www.instagram.com/sinfulx.ai" 1714 class="inline-flex items-center justify-center w-9 h-9 rounded-full border border-gray-800 text-gray-400 hover:text-red-400 hover:border-red-500/40 transition-colors" 1715 aria-label="Instagram"> 1716 <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 1717 <path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259
17170-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/> 1718 </svg> 1719 </a> 1720 <a href="https://twitter.com/SinfulX_ai" 1721 class="inline-flex items-center justify-center w-9 h-9 rounded-full border border-gray-800 text-gray-400 hover:text-red-400 hover:border-red-500/40 transition-colors" 1722 aria-label="Twitter/X"> 1723 <svg class="w-4 h-4" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true"> 1724 <path d="M24 4.557c-.883.392-1.832.656-2.828.775 1.017-.609 1.798-1.574 2.165-2.724-.951.564-2.005.974-3.127 1.195-.897-.957-2.178-1.555-3.594-1.555-3.179 0-5.515 2.966-4.797 6.045-4.091-.205-7.719-2.165-10.148-5.144-1.29 2.213-.669 5.108 1.523 6.574-.806-.026-1.566-.247-2.229-.616-.054 2.281 1.581 4.415 3.949 4.89-.693.188-1.452.232-2.224.084.626 1.956 2.444 3.379 4.6 3.419-2.07 1.623-4.678 2.348-7.29 2.04 2.179 1.397 4.768 2.212 7.548 2.212 9.142 0 14.307-7.721 13.995-14.646.962-.695 1.797-1.562 2.457-2.549z"/> 1725 </svg> 1726 </a> 1727 </div> 1728 </div> 1729 </div> 1730 </div> 1731 </footer> 1732 </div> 1733 1734 <!-- Authentication Modal --> 1735 <div x-data="authModal({ 1736 isAuthenticated: false, 1737 isBotCrawler: false, 1738 registerRoute: 'https://sinfulx.ai/register', 1739 loginRoute: 'https://sinfulx.ai/login', 1740 passwordResetRoute: 'https://sinfulx.ai/forgot-password', 1741 homeRoute: 'https://sinfulx.ai' 1742 })" 1743 x-init="init()" 1744 x-show="showModal" 1745 x-cloak 1746 data-auth-modal-root 1747 data-registration-promo-enabled="true" 1748 class="fixed inset-0 overflow-y-auto" 1749 style="z-index: var(--z-modal, 200); display: none;" 1750 role="dialog" 1751 aria-modal="true" 1752 aria-labelledby="auth-modal-title" 1753 tabindex="-1" 1754 x-bind:aria-hidden="!showModal" 1755 @keydown.escape.window="closeModal()"> 1756 1757 <div class="fixed inset-0 bg-black/85 backdrop-blur-md" 1758 x-show="showModal" 1759 x-transition:enter="ease-out duration-300" 1760 x-transition:enter-start="opacity-0" 1761 x-transition:enter-end="opacity-100" 1762 x-transition:leave="ease-in duration-200" 1763 x-transition:leave-start="opacity-100" 1764 x-transition:leave-end="opacity-0" 1765 @click="closeModal()"> 1766 </div> 1767 1768 <div class="fixed inset-0 flex items-end justify-center p-3 pb-[max(0.75rem,env(safe-area-inset-bottom))] sm:items-center sm:p-5 sm:pb-5 lg:p-8"> 1769 <div class="relative w-full max-w-[26.5rem] md:max-w-[34rem] lg:max-w-[66rem]" 1770 x-show="showModal" 1771 x-transition:enter="ease-out duration-300" 1772 x-transition:enter-start="opacity-0 translate-y-4 scale-95" 1773 x-transition:enter-end="opacity-100 translate-y-0 scale-100" 1774 x-transition:leave="ease-in duration-200" 1775 x-transition:leave-start="opacity-100 translate-y-0 scale-100" 1776 x-transition:leave-end="opacity-0 translate-y-4 scale-95" 1777 @click.stop> 1778 1779 <div class="relative max-h-[min(52rem,90dvh)] overflow-y-auto overscroll-contain rounded-3xl border border-white/10 bg-[#0a0c10] shadow-[0_28px_100px_rgba(0,0,0,0.8)] [scrollbar-width:none] [-ms-overflow-style:none] [&::-webkit-scrollbar]:hidden sm:max-h-[min(52rem,90dvh)] lg:max-h-[min(48rem,90dvh)]" 1780 style="background-image: radial-gradient(circle at 22% 12%, rgba(255, 45, 85, 0.16), transparent 34%), radial-gradient(circle at 78% 88%, rgba(255, 255, 255, 0.025), transparent 40%);"> 1781 1782 <button @click="closeModal()" 1783 type="button" 1784 class="absolute right-3 top-3 z-20 inline-flex h-10 w-10 items-center justify-center rounded-full text-gray-400 transition-colors hover:bg-white/10 hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-red-500 md:right-4 md:top-4" 1785 aria-label="Close modal">
1786 <span class="sr-only">Close</span> 1787 <svg class="w-5 h-5" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1788 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/> 1789 </svg> 1790 </button> 1791 1792 <div class="lg:grid lg:grid-cols-[minmax(0,1.05fr)_minmax(24rem,1.1fr)] lg:items-stretch"> 1793 <header class="px-4 pb-0 pt-5 text-center sm:px-6 sm:pt-7 md:px-8 md:pt-10 lg:flex lg:flex-col lg:items-start lg:justify-center lg:border-r lg:border-white/10 lg:bg-black/20 lg:py-10 lg:pl-12 lg:pr-14 lg:text-left"> 1794 <span id="auth-modal-title" class="sr-only" x-text="currentTitle">Ready for this?</span> 1795 <img src="https://sinfulx.ai/images/sinful-ai-logo.png" 1796 alt="SinfulX AI" 1797 class="mx-auto h-8 w-auto shrink-0 object-contain object-left drop-shadow-[0_0_24px_rgba(255,45,85,0.35)] sm:h-10 md:h-12 lg:mx-0 lg:h-14"> 1798 1799 <div class="mt-3 sm:mt-4 md:mt-6 lg:mt-8" :class="mode === 'register' ? '' : 'hidden'"> 1800 <h2 class="text-[clamp(1.35rem,5.6vw,1.75rem)] font-light uppercase leading-[0.95] tracking-[0.01em] text-white lg:text-[2.15rem] xl:text-[2.45rem]"> 1801 <span class="block lg:whitespace-nowrap"> 1802 <span class="font-light text-white/90">GET</span> 1803 <strong class="ml-1.5 font-semibold tracking-[-0.02em] text-[#ff3b6a] drop-shadow-[0_0_18px_rgba(255,59,106,0.55)]"> 1804 15 BONUS 1805 </strong> 1806 </span> 1807 <span class="mt-1 block lg:whitespace-nowrap"> 1808 <strong class="font-semibold tracking-[-0.02em] text-[#ff3b6a] drop-shadow-[0_0_18px_rgba(255,59,106,0.55)]"> 1809 VIZ 1810 </strong> 1811 <span class="ml-1.5 font-light text-white">AFTER PURCHASE</span> 1812 </span> 1813 </h2> 1814 1815 <div class="mt-3 flex items-center justify-center gap-0 text-[11px] text-gray-300 sm:mt-4 sm:text-xs md:mt-5 lg:mt-8 lg:flex-col lg:items-start lg:gap-3 lg:text-sm [@media(max-height:700px)]:max-lg:hidden"> 1816 <div class="flex min-w-0 items-center justify-center gap-1.5 px-2 sm:px-3 lg:px-0"> 1817 <svg class="w-4 h-4 shrink-0 text-[#ff3b6a]" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1818 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M13 10V3L4 14h7v7l9-11h-7z"/> 1819 </svg> 1820 <span>Instant delivery</span> 1821 </div> 1822 <span class="h-3.5 w-px shrink-0 bg-white/15 lg:hidden" aria-hidden="true"></span> 1823 <div class="flex min-w-0 items-center justify-center gap-1.5 px-2 sm:px-3 lg:px-0"> 1824 <svg class="w-4 h-4 shrink-0 text-[#ff3b6a]" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1825 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 12l2 2 4-4m5.618-4.016A11.955 11.955 0 0112 2.944a11.955 11.955 0 01-8.618 3.04A12.02 12.02 0 003 9c0 5.591 3.824 10.29 9 11.622 5.176-1.332 9-6.03 9-11.622 0-1.042-.133-2.052-.382-3.016z"/> 1826 </svg> 1827 <span>Secure & private</span> 1828 </div> 1829 <span class="h-3.5 w-px shrink-0 bg-white/15 lg:hidden" aria-hidden="true"></span> 1830 <div class="flex min-w-0 items-center justify-center gap-1.5 px-2 sm:px-3 lg:px-0"> 1831 <svg class="w-4 h-4 shrink-0 text-[#ff3b6a]" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1832 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M18.364 18.364A9 9 0 005.636 5.636m12.728 12.728A9 9 0 015.636 5.636m12.728 12.728L5.636 5.636"/> 1833 </svg>
1834 <span>No spam. Ever.</span> 1835 </div> 1836 </div> 1837 </div> 1838 1839 <div class="mt-3 sm:mt-5 md:mt-6" :class="mode === 'login' ? '' : 'hidden'" > 1840 <h2 class="text-xl font-bold text-white sm:text-3xl lg:text-4xl" x-text="currentTitle"> 1841 Ready for this? 1842 </h2> 1843 <p class="mt-2 text-sm text-gray-400 md:text-base" x-text="currentSubtitle"></p> 1844 </div> 1845 </header> 1846 1847 <div class="lg:flex lg:flex-col lg:justify-center lg:px-8 lg:pb-6 lg:pt-14 xl:px-10"> 1848 <div class="px-4 sm:px-6 md:px-8 lg:px-0" :class="mode === 'register' && true ? 'mt-4 md:mt-6 lg:mt-0' : 'mt-4 lg:mt-0'"> 1849 <div class="grid grid-cols-2 rounded-2xl border border-white/12 bg-black/35 p-1"> 1850 <button type="button" 1851 @click="switchMode('register')" 1852 :class="mode === 'register' ? 'bg-red-600 text-white shadow-[0_8px_20px_rgba(220,38,38,0.35)]' : 'text-gray-400 hover:text-white'" 1853 class="inline-flex items-center justify-center gap-2 rounded-xl px-3 py-2 text-sm font-semibold transition-all duration-200 md:py-3"> 1854 <svg class="w-4 h-4" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1855 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/> 1856 </svg> 1857 Sign Up 1858 </button> 1859 <button type="button" 1860 @click="switchMode('login')" 1861 :class="mode === 'login' ? 'bg-red-600 text-white shadow-[0_8px_20px_rgba(220,38,38,0.35)]' : 'text-gray-400 hover:text-white'" 1862 class="inline-flex items-center justify-center gap-2 rounded-xl px-3 py-2 text-sm font-semibold transition-all duration-200 md:py-3"> 1863 <svg class="w-4 h-4" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1864 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"/> 1865 </svg> 1866 Log In 1867 </button> 1868 </div> 1869 </div> 1870 1871 <div class="mt-3 px-4 sm:px-6 md:mt-5 md:px-8 lg:px-0"> 1872 <a href="https://sinfulx.ai/auth/google/redirect" rel="nofollow" 1873 class="flex w-full items-center justify-center gap-3 rounded-full border border-gray-200 bg-white px-4 py-2.5 text-sm font-semibold text-gray-900 shadow-sm transition-all duration-200 hover:scale-[1.01] hover:bg-gray-50 hover:shadow-md active:scale-[0.99] focus:outline-none focus-visible:ring-2 focus-visible:ring-red-500 focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a0c10] sm:text-base md:py-3.5 lg:py-3.5"> 1874 <svg width="20" height="20" viewBox="0 0 18 18" xmlns="http://www.w3.org/2000/svg" aria-hidden="true"> 1875 <g fill="none" fill-rule="evenodd"> 1876 <path d="M17.64 9.2c0-.637-.057-1.251-.164-1.84H9v3.481h4.844c-.209 1.125-.843 2.078-1.796 2.717v2.258h2.908c1.702-1.567 2.684-3.874 2.684-6.615z" fill="#4285F4"/> 1877 <path d="M9.003 18c2.43 0 4.467-.806 5.956-2.183l-2.909-2.259c-.806.54-1.836.86-3.047.86-2.344 0-4.328-1.584-5.036-3.711H.96v2.332C2.44 15.983 5.485 18 9.003 18z" fill="#34A853"/> 1878 <path d="M3.964 10.712c-.18-.54-.282-1.117-.282-1.71 0-.593.102-1.17.282-1.71V4.96H.957C.347 6.175 0 7.55 0 9.002c0 1.452.348 2.827.957 4.042l3.007-2.332z" fill="#FBBC05"/> 1879 <path d="M9.003 3.58c1.321 0 2.508.454 3.44 1.345l2.582-2.58C13.464.891 11.428 0 9.002 0 5.485 0 2.44 2.017.96 4.958L3.967 7.29c.708-2.127 2.692-3.71 5.036-3.71z" fill="#EA4335"/> 1880 </g> 1881 </svg>
1882 <span>Continue with Google</span> 1883 </a> 1884 </div> 1885 1886 <div class="px-4 sm:px-6 md:px-8 lg:px-0"> 1887 <div class="relative my-3 flex items-center md:my-4"> 1888 <div class="grow border-t border-white/10"></div> 1889 <span class="px-4 text-xs font-medium tracking-wide text-gray-500">OR</span> 1890 <div class="grow border-t border-white/10"></div> 1891 </div> 1892 </div> 1893 1894 <form @submit.prevent="submitForm" class="space-y-2.5 px-4 pb-4 sm:px-6 sm:pb-6 md:space-y-3.5 md:px-8 md:pb-8 lg:space-y-3 lg:px-0 lg:pb-0"> 1895 <input type="hidden" name="_token" value="poFNnKE01odzex1uMX8UptP5GRFtYA6AxoAjuhRX" autocomplete="off"> 1896 <input type="hidden" name="redirect_to" x-bind:value="redirectTo" x-show="mode === 'login'"> 1897 1898 <div x-show="errors.general" 1899 x-text="errors.general" 1900 class="rounded-lg border border-red-500/30 bg-red-500/10 p-3 text-sm text-red-400" 1901 role="alert" 1902 style="display: none;"></div> 1903 1904 <div :class="mode === 'register' ? '' : 'hidden'"> 1905 <label for="auth-username" class="sr-only">
1905Username</label> 1906 <div class="relative"> 1907 <span class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-4 text-gray-500" data-auth-field-icon="user" aria-hidden="true"> 1908 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1909 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z"/> 1910 </svg> 1911 </span> 1912 <input id="auth-username" 1913 type="text" 1914 x-model="formData.username" 1915 placeholder="Choose a username" 1916 class="w-full rounded-xl border border-white/10 bg-black/40 py-2.5 text-base text-white placeholder-gray-500 transition-all duration-200 focus:border-red-500/60 focus:outline-none focus:ring-2 focus:ring-red-500/30 disabled:opacity-60 md:py-3.5 lg:py-3.5 pl-12 pr-4" 1917 :required="mode === 'register'" 1918 :disabled="isSubmitting" 1919 autocomplete="username" 1920 pattern="[a-zA-Z0-9_]{3,20}" 1921 title="Username must be 3-20 characters, letters, numbers, and underscores only"> 1922 </div> 1923 <span x-show="errors.username" x-text="errors.username" class="mt-1 block text-xs text-red-400" role="alert" style="display: none;"></span> 1924 </div> 1925 1926 <div> 1927 <label for="auth-email" class="sr-only">Email</label> 1928 <div class="relative"> 1929 <span class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-4 text-gray-500" data-auth-field-icon="mail" aria-hidden="true"> 1930 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1931 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"/> 1932 </svg> 1933 </span> 1934 <input id="auth-email" 1935 type="text" 1936 x-model="formData.email" 1937 :placeholder="mode === 'register' ? 'Your email address' : 'Username or Email'" 1938 class="w-full rounded-xl border border-white/10 bg-black/40 py-2.5 text-base text-white placeholder-gray-500 transition-all duration-200 focus:border-red-500/60 focus:outline-none focus:ring-2 focus:ring-red-500/30 disabled:opacity-60 md:py-3.5 lg:py-3.5 pl-12 pr-4" 1939 required 1940 :disabled="isSubmitting" 1941 :autocomplete="mode === 'register' ? 'email' : 'username'"> 1942 </div> 1943 <span x-show="errors.email" x-text="errors.email" class="mt-1 block text-xs text-red-400" role="alert" style="display: none;"></span> 1944 </div> 1945 1946 <div> 1947 <label for="auth-password" class="sr-only">Password</label> 1948 <div class="relative"> 1949 <span class="pointer-events-none absolute inset-y-0 left-0 flex items-center pl-4 text-gray-500" data-auth-field-icon="lock" aria-hidden="true"> 1950 <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 1951 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"/> 1952 </svg> 1953 </span> 1954 <input id="auth-password" 1955 :type="showPassword ? 'text' : 'password'" 1956 x-model="formData.password" 1957 :placeholder="mode === 'register' ? 'Create a password' : 'Enter your password'" 1958 class="w-full rounded-xl border border-white/10 bg-black/40 py-2.5 text-base text-white placeholder-gray-500 transition-all duration-200 focus:border-red-500/60 focus:outline-none focus:ring-2 focus:ring-red-500/30 disabled:opacity-60 md:py-3.5 lg:py-3.5 pl-12 pr-16" 1959 required 1960 :disabled="isSubmitting" 1961 :autocomplete="mode === 'register' ? 'new-password' : 'current-password'"> 1962 <button type="button" 1963 @click="showPassword = !showPassword" 1964 class="absolute right-3 top-1/2 -translate-y-1/2 roun
1964ded-md px-2 py-1 text-xs font-medium text-gray-400 transition-colors hover:text-white focus:outline-none focus-visible:ring-2 focus-visible:ring-red-500" 1965 :disabled="isSubmitting"> 1966 <span x-show="!showPassword">Show</span> 1967 <span x-show="showPassword" style="display: none;">Hide</span> 1968 </button> 1969 </div> 1970 <span x-show="errors.password" x-text="errors.password" class="mt-1 block text-xs text-red-400" role="alert" style="display: none;"></span> 1971 </div> 1972 1973 <div class="items-center justify-between gap-3" :class="mode === 'login' ? 'flex' : 'hidden'"> 1974 <label class="flex cursor-pointer items-center text-sm text-gray-300"> 1975 <input type="checkbox" name="remember" class="rounded border-white/20 bg-black/40 text-red-500 accent-red-500 focus:ring-red-500/50"> 1976 <span class="ml-2">Remember me</span> 1977 </label> 1978 <button type="button" @click.prevent="openPasswordResetModal" class="text-sm text-gray-300 transition-colors hover:text-red-400"> 1979 Forgot password? 1980 </button> 1981 </div> 1982 1983 <div class="space-y-2 pt-0.5 md:space-y-3.5" :class="mode === 'register' ? '' : 'hidden'"> 1984 <label class="flex cursor-pointer items-start group"> 1985 <input type="checkbox" 1986 x-model="formData.terms_accepted" 1987 class="mt-0.5 h-5 w-5 shrink-0 rounded border-white/25 bg-transparent text-red-500 accent-red-500 focus:ring-2 focus:ring-red-500/50" 1988 :required="mode === 'register'" 1989 :disabled="isSubmitting"> 1990 <span class="ml-3 text-sm leading-relaxed text-gray-300 transition-colors group-hover:text-white"> 1991 I agree to the 1992 <a href="https://sinfulx.ai/legal/privacy" target="_blank" rel="noopener" class="text-red-400 underline decoration-red-500/60 underline-offset-2 hover:text-red-300">Privacy Policy</a> 1993 and 1994 <a href="https://sinfulx.ai/legal/terms" target="_blank" rel="noopener" class="text-red-400 underline decoration-red-500/60 underline-offset-2 hover:text-red-300">Terms of Use</a> 1995 </span> 1996 </label> 1997 1998 <label class="flex cursor-pointer items-start group"> 1999 <input type="checkbox" 2000 x-model="formData.age_verified" 2001 class="mt-0.5 h-5 w-5 shrink-0 rounded border-white/25 bg-transparent text-red-500 accent-red-500 focus:ring-2 focus:ring-red-500/50" 2002 :required="mode === 'register'" 2003 :disabled="isSubmitting"> 2004 <span class="ml-3 text-sm leading-relaxed text-gray-300 transition-colors group-hover:text-white"> 2005 I confirm that I am 18 years or older 2006 </span> 2007 </label> 2008 2009 <label class="flex cursor-pointer items-start border-t border-white/10 pt-2 md:pt-3 group"> 2010 <input type="checkbox" 2011 x-model="formData.newsletter_subscribed" 2012 class="mt-0.5 h-5 w-5 shrink-0 rounded border-white/25 bg-transparent text-red-500 accent-red-500 focus:ring-2 focus:ring-red-500/50" 2013 :disabled="isSubmitting">
2014 <span class="ml-3 min-w-0 leading-relaxed"> 2015 <span class="block text-sm font-medium text-gray-200 transition-colors group-hover:text-white"> 2016 Email me updates and offers 2017 </span> 2018 <span class="mt-0.5 block text-xs text-gray-400"> 2019 Code SINFULX-REAL gives 15 bonus VIZ after checkout 2020 </span> 2021 </span> 2022 </label> 2023 </div> 2024 2025 <button type="submit" 2026 class="w-full rounded-2xl bg-red-600 px-4 py-3 text-white shadow-[0_12px_28px_rgba(220,38,38,0.32)] transition-all duration-200 hover:scale-[1.01] hover:bg-red-500 hover:shadow-[0_14px_32px_rgba(220,38,38,0.4)] active:scale-[0.99] disabled:cursor-not-allowed disabled:opacity-50 disabled:transform-none focus:outline-none focus-visible:ring-2 focus-visible:ring-white focus-visible:ring-offset-2 focus-visible:ring-offset-[#0a0c10] md:py-3.5 lg:py-3.5" 2027 :disabled="isSubmitting || (mode === 'register' && (!formData.username || !formData.email || !formData.password || !formData.terms_accepted || !formData.age_verified)) || (mode === 'login' && (!formData.email || !formData.password))"> 2028 <span x-show="!isSubmitting"> 2029 <span :class="mode === 'register' ? 'flex items-center justify-center gap-3' : 'hidden'"> 2030 <svg class="w-6 h-6 shrink-0" data-auth-cta-icon="gift" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 2031 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v13m0-13V6a2 2 0 112 2h-2zm0 0V5.5A2.5 2.5 0 109.5 8H12zm-7 4h14M5 12a2 2 0 110-4h14a2 2 0 110 4M5 12v7a2 2 0 002 2h10a2 2 0 002-2v-7"/> 2032 </svg> 2033 <span class="min-w-0 text-left sm:text-center"> 2034 <strong class="block text-sm leading-tight sm:text-base lg:whitespace-nowrap"> 2035 Sign up free 2036 </strong> 2037 <span class="mt-0.5 block text-[11px] font-medium leading-tight text-white/80 sm:text-xs"> 2038 15 bonus VIZ 2039 </span> 2040 </span> 2041 </span> 2042 <span :class="mode === 'login' ? '' : 'hidden'" x-text="submitButtonText"></span> 2043 </span> 2044 <span x-show="isSubmitting" class="flex items-center justify-center" style="display: none;"> 2045 <svg class="w-5 h-5 animate-spin mr-2" aria-hidden="true" fill="none" viewBox="0 0 24 24"> 2046 <circle class="opacity-25" cx="12" cy="12" r="10" stroke="currentColor" stroke-width="4"></circle> 2047 <path class="opacity-75" fill="currentColor" d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"></path> 2048 </svg> 2049 <span x-text="mode === 'register' ? 'Creating account...' : 'Signing in...'"></span> 2050 </span> 2051 </button> 2052 2053 <p class="px-1 text-center text-[11px] leading-relaxed text-gray-500 sm:text-xs" :class="mode === 'register' ? '' : 'hidden'"> 2054 You'll receive 15 bonus VIZ after a successful paid checkout. 2055 </p> 2056 </form> 2057 </div> 2058 </div> 2059 2060 <div x-show="hasOverflow && showModal" 2061 class="pointer-events-none absolute bottom-3 left-1/2 -translate-x-1/2 animate-bounce text-white/40 lg:hidden" 2062 x-transition> 2063 <svg class="w-5 h-5" aria-hidden="true" fill="none" stroke="currentColor" viewBox="0 0 24 24"> 2064 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/> 2065 </svg> 2066 </div> 2067 </div> 2068 </div> 2069 </div> 2070</div> 2071 2072 <!-- Global Confirmation Modal (replaces native confirm()) --> 2073 <div x-data> 2074 2075 <template x-if="$store.confirm?.isOpen"> 2076<div 2077 x-transition:enter="transition ease-out duration-200" 2078 x-transition:enter-start="opacity-0" 2079 x-transition:enter-end="opacity-100" 2080 x-transition:leave="transition ease-in duration-150" 2081 x-transition:leave-start="opacity-100" 2082 x-transition:leave-end="opacity-0" 2083 @keydown.escape.window="$store.confirm?.cancel()" 2084 class="fixed inset-0 z-70 overflow-y-auto" 2085 aria-labelledby="confirm-modal-title" 2086 role="dialog" 2087 aria-modal="true" 2088> 2089 2090 <div 2091 class="fixed inset-0 bg-black/80 backdrop-blur-sm" 2092 @click="$store.confirm?.cancel()" 2093 ></div> 2094 2095 2096 <div class="flex min-h-full items-center justify-center p-4"> 2097 <div 2098 x-transition:enter="transition ease-out duration-200" 2099 x-transition:enter-start="opacity-0 scale-95" 2100 x-transition:enter-end="opacity-100 scale-100" 2101 x-transition:leave="transition ease-in duration-150" 2102 x-transition:leave-start="opacity-100 scale-100" 2103 x-transition:leave-end="opacity-0 scale-95" 2104 class="relative w-full max-w-md transform overflow-hidden rounded-xl bg-gray-900 border border-gray-700 p-6 shadow-2xl" 2105 @click.stop 2106 > 2107 2108 <div class="flex items-center justify-center w-12 h-12 mx-auto mb-4 rounded-full" 2109 :class="{ 2110 'bg-red-500/20': $store.confirm?.type === 'danger', 2111 'bg-amber-500/20': $store.confirm?.type === 'warning', 2112 'bg-green-500/20': $store.confirm?.type === 'success', 2113 'bg-blue-500/20': $store.confirm?.type === 'info' 2114 }"> 2115 2116 <template x-if="$store.confirm?.type === 'danger' || $store.confirm?.type === 'warning'"> 2117 <svg 2118 class="w-6 h-6" 2119 :class="$store.confirm?.iconColorClasses" 2120 fill="none"
2121 viewBox="0 0 24 24" 2122 stroke-width="2" 2123 stroke="currentColor" 2124 > 2125 <path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m-9.303 3.376c-.866 1.5.217 3.374 1.948 3.374h14.71c1.73 0 2.813-1.874 1.948-3.374L13.949 3.378c-.866-1.5-3.032-1.5-3.898 0L2.697 16.126zM12 15.75h.007v.008H12v-.008z" /> 2126 </svg> 2127 </template> 2128 <template x-if="$store.confirm?.type === 'success'"> 2129 <svg 2130 class="w-6 h-6" 2131 :class="$store.confirm?.iconColorClasses" 2132 fill="none" 2133 viewBox="0 0 24 24" 2134 stroke-width="2" 2135 stroke="currentColor" 2136 > 2137 <path stroke-linecap="round" stroke-linejoin="round" d="M9 12.75L11.25 15 15 9.75M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /> 2138 </svg> 2139 </template> 2140 2141 <template x-if="$store.confirm?.type === 'info'"> 2142 <svg 2143 class="w-6 h-6" 2144 :class="$store.confirm?.iconColorClasses" 2145 fill="none"
2146 viewBox="0 0 24 24" 2147 stroke-width="2" 2148 stroke="currentColor" 2149 > 2150 <path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" /> 2151 </svg> 2152 </template> 2153 </div> 2154 2155 2156 <h2 2157 id="confirm-modal-title" 2158 class="text-lg font-semibold text-white text-center mb-2" 2159 x-text="$store.confirm?.title" 2160 ></h2> 2161 2162 2163 <p 2164 class="text-gray-400 text-center mb-6" 2165 x-text="$store.confirm?.message" 2166 ></p> 2167 2168 2169 <div class="flex flex-col-reverse sm:flex-row sm:justify-center gap-3"> 2170 2171 <button 2172 type="button" 2173 @click="$store.confirm?.cancel()" 2174 class="px-4 py-2.5 text-sm font-medium text-gray-300 bg-gray-800 hover:bg-gray-700 rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-gray-500 focus:ring-offset-2 focus:ring-offset-gray-900" 2175 x-text="$store.confirm?.cancelText" 2176 ></button> 2177 2178 2179 <button 2180 type="button" 2181 @click="$store.confirm?.confirm()" 2182 class="px-4 py-2.5 text-sm font-medium text-white rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900" 2183 :class="$store.confirm?.confirmButtonClasses" 2184 x-text="$store.confirm?.confirmText" 2185 ></button> 2186 </div> 2187 </div> 2188 </div> 2189</div> 2190 </template> 2191</div> 2192 2193 <!-- Auto-open login modal if there are auth errors --> 2194 2195 <!-- Auto-open register modal if there are auth errors --> 2196 2197 <!-- Cookie Consent Scripts --> 2198 <template id="deferred-cookie-consent-template"> 2199 <!-- Main Cookie Consent Banner --> 2200<div class="cookie-consent-root 2201 cookie-consent-hide 2202 2203 consent-layout-cloud 2204 theme-dark" 2205 data-cookie-prefix="sinfulx-ai_2026" 2206 data-cookie-lifetime="365" 2207 data-reject-lifetime="30" 2208 role="dialog" 2209 aria-modal="true" 2210 aria-label="Cookie consent banner" 2211> 2212 <div class="cookie-consent-container"> 2213 <div class="cookie-consent-content-container"> 2214 <div class="cookie-consent-content"> 2215 <h2 class="cookie-consent-content-title"> 2216 ðª Cookie Preferences 2217 </h2> 2218 <div class="cookie-consent-content-description"> 2219 <p>We use cookies to enhance your experience on SinfulX AI, analyze site usage, and improve our AI-powered content generation services. Your privacy matters to us.</p> 2220 </div> 2221 </div> 2222 2223 <div class="cookie-consent-button-container"> 2224 <div class="cookie-consent-button-action flip-button"> 2225 <button type="button" class="cookie-consent-accept" aria-label="Accept all cookies"> 2226 Accept all 2227 </button> 2228 <button type="button" class="cookie-consent-reject" aria-label="Reject all cookies"> 2229 Reject all 2230 </button> 2231 </div> 2232 <button type="button" class="preferences-btn" aria-expanded="false" 2233 aria-controls="cookie-preferences-modal"> 2234 Manage preferences 2235 </button> 2236 </div> 2237 </div> 2238 </div> 2239 2240 <div class="cookie-consent-links-container"> 2241 <ul class="cookie-consent-links-list"> 2242 <li class="cookie-consent-link-item"> 2243 <a target="_blank" rel="noopener noreferrer" href="/legal/privacy" 2244 class="cookie-consent-link"> 2245 Privacy Policy 2246 </a> 2247 </li> 2248 <li class="cookie-consent-link-item"> 2249 <a target="_blank" rel="noopener noreferrer" href="/legal/terms" 2250 class="cookie-consent-link"> 2251 Terms of Service 2252 </a> 2253 </li> 2254 <li class="cookie-consent-link-item"> 2255 <a target="_blank" rel="noopener noreferrer" href="/legal/gdpr" 2256 class="cookie-consent-link"> 2257 GDPR Policy 2258 </a> 2259 </li> 2260 </ul> 2261 </div> 2262 </div> 2263 2264<!-- Cookie Preferences Modal --> 2265<div id="cookie-preferences-modal" class="cookie-preferences-modal" aria-hidden="true"> 2266 <div class="cookie-preferences-modal-overlay" tabindex="-1"></div> 2267 <div class="cookie-preferences-modal-content" role="document"> 2268 <div class="cookie-preferences-modal-header"> 2269 <h2 id="cookie-modal-title" class="cookie-preferences-modal-title"> 2270 Cookie Preferences 2271 </h2> 2272 <button type="button" class="cookie-preferences-modal-close" aria-label="Close cookie preferences"> 2273 <svg width="12" height="12" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg" 2274 aria-hidden="true"> 2275 <path d="M12 4L4 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> 2276 <path d="M4 4L12 12" stroke="currentColor" stroke-width="2" stroke-linecap="round"/> 2277 </svg> 2278 </button> 2279 </div> 2280 <div class="cookie-preferences-modal-body"> 2281 <p class="cookie-preferences-intro"> 2282 You can customize your cookie preferences below. 2283 </p> 2284 2285 <div class="cookie-categories"> 2286 <div class="cookie-category cookie-category-necessary"> 2287 <div class="cookie-category-header"> 2288 <h3 class="cookie-category-title">Essential Cookies</h3> 2289 <label class="cookie-toggle"> 2290 <input type="checkbox" 2291 disabled checked 2292 data-category="necessary" 2293 aria-label="Essential Cookies toggle">
2294 <span class="cookie-toggle-slider"></span> 2295 </label> 2296 </div> 2297 <p class="cookie-category-description">These cookies are essential for the website to function properly.</p> 2298 </div> 2299 <div class="cookie-category cookie-category-analytics"> 2300 <div class="cookie-category-header"> 2301 <h3 class="cookie-category-title">Analytics Cookies</h3> 2302 <label class="cookie-toggle"> 2303 <input type="checkbox" 2304 2305 data-category="analytics" 2306 aria-label="Analytics Cookies toggle"> 2307 <span class="cookie-toggle-slider"></span> 2308 </label> 2309 </div> 2310 <p class="cookie-category-description">These cookies help us understand how visitors interact with our AI platform and improve our services.</p> 2311 </div> 2312 <div class="cookie-category cookie-category-marketing"> 2313 <div class="cookie-category-header"> 2314 <h3 class="cookie-category-title">Marketing Cookies</h3> 2315 <label class="cookie-toggle"> 2316 <input type="checkbox" 2317 2318 data-category="marketing" 2319 aria-label="Marketing Cookies toggle"> 2320 <span class="cookie-toggle-slider"></span> 2321 </label> 2322 </div> 2323 <p class="cookie-category-description">These cookies are used for advertising and tracking purposes.</p> 2324 </div> 2325 <div class="cookie-category cookie-category-preferences"> 2326 <div class="cookie-category-header"> 2327 <h3 class="cookie-category-title">Preferences Cookies</h3> 2328 <label class="cookie-toggle"> 2329 <input type="checkbox" 2330 2331 data-category="preferences" 2332 aria-label="Preferences Cookies toggle"> 2333 <span class="cookie-toggle-slider"></span> 2334 </label> 2335 </div> 2336 <p class="cookie-category-description">These cookies allow the website to remember user preferences.</p> 2337 </div> 2338 </div> 2339 </div> 2340 <div class="cookie-preferences-modal-footer"> 2341 <div class="cookie-preferences-modal-button-group"> 2342 <button type="button" class="cookie-consent-accept primary-button"> 2343 Accept all 2344 </button> 2345 <button type="button" class="cookie-consent-reject primary-button"> 2346 Reject all 2347 </button> 2348 </div> 2349 <div class="cookie-preferences-modal-save"> 2350 <button type="button" class="cookie-preferences-save primary-button"> 2351 Save preferences 2352 </button> 2353 </div> 2354 </div> 2355 </div> 2356</div> 2357
2358<script src="https://sinfulx.ai/vendor/devrabiul/laravel-cookie-consent/js/script.js"></script>
2358<script src="https://sinfulx.ai/laravel-cookie-consent/script-utils"></script>
2358 2359
2360<script type="text/javascript"> 2361 "use strict"; 2362 // Load analytics/tracking services based on preferences 2363 2364 // Then define your service loader 2365 window.loadCookieCategoriesEnabledServices = function () { 2366 const preferences = getCookiePreferences(); 2367 if (!preferences) return; 2368 2369 try { 2370 if (preferences?.analytics) { 2371 const action = "loadGoogleAnalytics"; 2372 if (typeof window[action] === "function") { 2373 window[action](); 2374 } 2375 } 2376 } catch (exception) { 2377 console.info(exception) 2378 } 2379 try { 2380 if (preferences?.marketing) { 2381 const action = "loadFacebookPixel"; 2382 if (typeof window[action] === "function") { 2383 window[action](); 2384 } 2385 } 2386 } catch (exception) { 2387 console.info(exception) 2388 } 2389 } 2390 2391 document.addEventListener('DOMContentLoaded', function () { 2392 try { 2393 loadCookieCategoriesEnabledServices(); 2394 } catch (e) { 2395 console.info(e); 2396 } 2397 }) 2398</script>
2398 2399 2400 </template> 2401
2401<script> 2402 (function () { 2403 var loaded = false; 2404 // Scroll/idle only: pointerdown/touchstart raced the first tap 2405 // (age gate, card, filter) and inflated mobile INP. 2406 var interactionEvents = ['scroll']; 2407 2408 function copyScriptAttributes(source, target) { 2409 for (var i = 0; i < source.attributes.length; i++) { 2410 var attr = source.attributes[i]; 2411 target.setAttribute(attr.name, attr.value); 2412 } 2413 } 2414 2415 function replayDomReadyListener(listener) { 2416 window.setTimeout(function () { 2417 var event = new Event('DOMContentLoaded'); 2418 2419 if (typeof listener === 'function') { 2420 listener.call(document, event); 2421 return; 2422 } 2423 2424 if (listener && typeof listener.handleEvent === 'function') { 2425 listener.handleEvent(event); 2426 } 2427 }, 0); 2428 } 2429 2430 function executeScript(source) { 2431 return new Promise(function (resolve) { 2432 var script = document.createElement('script'); 2433 var originalAddEventListener = document.addEventListener; 2434 2435 document.addEventListener = function (type, listener, options) { 2436 if (type === 'DOMContentLoaded' && document.readyState !== 'loading') { 2437 replayDomReadyListener(listener); 2438 return; 2439 } 2440 2441 return originalAddEventListener.call(document, type, listener, options); 2442 }; 2443 2444 function restoreDomReadyListener() { 2445 document.addEventListener = originalAddEventListener; 2446 } 2447 2448 copyScriptAttributes(source, script); 2449 2450 if (source.src) { 2451 script.async = false; 2452 script.onload = function () { 2453 restoreDomReadyListener(); 2454 resolve(); 2455 }; 2456 script.onerror = function () { 2457 restoreDomReadyListener(); 2458 resolve(); 2459 }; 2460 document.body.appendChild(script); 2461 return; 2462 } 2463 2464 script.text = source.textContent; 2465 document.body.appendChild(script); 2466 restoreDomReadyListener(); 2467 resolve(); 2468 }); 2469 } 2470 2471 function executeScriptsSequentially(scripts) { 2472 return scripts.reduce(function (chain, script) { 2473 return chain.then(function () { 2474 return executeScript(script); 2475 }); 2476 }, Promise.resolve()); 2477 } 2478 2479 function activateCookieConsent() { 2480 if (loaded) return; 2481 loaded = true; 2482 2483 var template = document.getElementById('deferred-cookie-consent-template'); 2484 if (!template) return; 2485 2486 var fragment = template.content.cloneNode(true); 2487 var scripts = Array.prototype.slice.call(fragment.querySelectorAll('script')); 2488 scripts.forEach(function (script) { 2489 script.remove(); 2490 }); 2491 2492 template.parentNode.insertBefore(fragment, template); 2493 template.remove(); 2494 2495 if (typeof window.__sxDowngradeCookieConsentHeadings === 'function') { 2496 window.__sxDowngradeCookieConsentHeadings(); 2497 } 2498 2499 executeScriptsSequentially(scripts).then(function () { 2500 if (typeof window.loadCookieCategoriesEnabledServices === 'function') { 2501 window.loadCookieCategoriesEnabledServices(); 2502 } 2503 document.dispatchEvent(new CustomEvent('sxCookieConsentLoaded')); 2504 }); 2505 } 2506 2507 function scheduleCookieConsent() { 2508 if ('requestIdleCallback' in window) { 2509 window.requestIdleCallback(activateCookieConsent, { timeout: 3500 }); 2510 return; 2511 } 2512 2513 window.setTimeout(activateCookieConsent, 2200); 2514 } 2515
2516 interactionEvents.forEach(function (eventName) { 2517 window.addEventListener(eventName, activateCookieConsent, { once: true, passive: true }); 2518 }); 2519 2520 if (document.readyState === 'complete') { 2521 scheduleCookieConsent(); 2522 } else { 2523 window.addEventListener('load', scheduleCookieConsent, { once: true }); 2524 } 2525 2526 window.setTimeout(activateCookieConsent, 6000); 2527 })(); 2528 </script>
2528 2529 2530 2531
2531<script> 2532 (function () { 2533 var TARGET_TAGS = ['h2', 'h3']; 2534 function downgradeCookieHeadings(root) { 2535 if (!root) return; 2536 TARGET_TAGS.forEach(function (tag) { 2537 var level = tag.charAt(1); 2538 root.querySelectorAll(tag).forEach(function (heading) { 2539 var replacement = document.createElement('strong'); 2540 replacement.setAttribute('role', 'heading'); 2541 replacement.setAttribute('aria-level', level); 2542 for (var i = 0; i < heading.attributes.length; i++) { 2543 var attr = heading.attributes[i]; 2544 if (attr.name === 'role' || attr.name === 'aria-level') continue; 2545 replacement.setAttribute(attr.name, attr.value); 2546 } 2547 replacement.innerHTML = heading.innerHTML; 2548 heading.replaceWith(replacement); 2549 }); 2550 }); 2551 } 2552 function run() { 2553 downgradeCookieHeadings(document.querySelector('.cookie-consent-root')); 2554 downgradeCookieHeadings(document.querySelector('.cookie-preferences-modal')); 2555 } 2556 window.__sxDowngradeCookieConsentHeadings = run; 2557 if (document.readyState === 'loading') { 2558 document.addEventListener('DOMContentLoaded', run); 2559 } else { 2560 run(); 2561 } 2562 document.addEventListener('sxCookieConsentLoaded', run); 2563 })(); 2564 </script>
2564 2565 2566 <!-- Google Analytics with Consent Mode v2 (GDPR compliance) --> 2567
2567<script> 2568 window.dataLayer = window.dataLayer || []; 2569 function gtag(){dataLayer.push(arguments);} 2570 2571 gtag('consent', 'default', { 2572 'ad_storage': 'denied', 2573 'ad_user_data': 'denied', 2574 'ad_personalization': 'denied', 2575 'analytics_storage': 'denied', 2576 'wait_for_update': 500 2577 }); 2578 2579 (function() { 2580 var gaLoaded = false; 2581 2582 function loadGoogleAnalytics() { 2583 if (gaLoaded) return; 2584 gaLoaded = true; 2585 2586 var script = document.createElement('script'); 2587 script.src = 'https://www.googletagmanager.com/gtag/js?id=G-YGVFEL8VVZ'; 2588 script.async = true; 2589 document.head.appendChild(script); 2590 2591 gtag('js', new Date()); 2592 gtag('config', 'G-YGVFEL8VVZ'); 2593 } 2594 2595 function updateConsent(analyticsGranted) { 2596 gtag('consent', 'update', { 2597 'ad_storage': analyticsGranted ? 'granted' : 'denied', 2598 'ad_user_data': analyticsGranted ? 'granted' : 'denied', 2599 'ad_personalization': analyticsGranted ? 'granted' : 'denied', 2600 'analytics_storage': analyticsGranted ? 'granted' : 'denied' 2601 }); 2602 2603 if (analyticsGranted) { 2604 loadGoogleAnalytics(); 2605 } 2606 } 2607 2608 function checkAndUpdateConsent() { 2609 if (typeof window.getCookiePreferences === 'function') { 2610 const prefs = window.getCookiePreferences(); 2611 if (prefs && prefs.analytics === true) { 2612 updateConsent(true); 2613 } 2614 } 2615 } 2616 2617 if (document.readyState === 'loading') { 2618 document.addEventListener('DOMContentLoaded', checkAndUpdateConsent); 2619 } else { 2620 checkAndUpdateConsent(); 2621 } 2622 2623 document.addEventListener('cookieConsentAccepted', function() { 2624 if (typeof window.getCookiePreferences === 'function') { 2625 const prefs = window.getCookiePreferences(); 2626 updateConsent(prefs && prefs.analytics === true); 2627 } 2628 }); 2629 2630 document.addEventListener('cookiePreferencesSaved', function(e) { 2631 updateConsent(e.detail && e.detail.analytics === true); 2632 }); 2633 })(); 2634 </script>
2634 2635 2636 <!-- NSFW Mode Click-to-Reveal Component --> 2637 2638 <!-- Ahrefs Analytics - Deferred to avoid blocking LCP --> 2639
2639<script> 2640 (function () { 2641 var ahrefsLoaded = false; 2642 var isPublicPerformanceRoute = false; 2643 2644 function hasAnalyticsConsent() { 2645 if (typeof window.getCookiePreferences !== 'function') return false; 2646 2647 var prefs = window.getCookiePreferences(); 2648 return prefs && prefs.analytics === true; 2649 } 2650 2651 function loadAhrefs() { 2652 if (ahrefsLoaded || !hasAnalyticsConsent()) return; 2653 ahrefsLoaded = true; 2654 2655 var s = document.createElement('script'); 2656 s.src = 'https://analytics.ahrefs.com/analytics.js'; 2657 s.dataset.key = 'FOnFfnoVPSoehQVa1CDhaQ'; 2658 s.async = true; 2659 document.head.appendChild(s); 2660 } 2661 2662 function scheduleAhrefs() { 2663 if (isPublicPerformanceRoute && 'requestIdleCallback' in window) { 2664 window.requestIdleCallback(loadAhrefs, { timeout: 5000 }); 2665 return; 2666 } 2667 2668 loadAhrefs(); 2669 } 2670 2671 if (document.readyState === 'complete') { 2672 scheduleAhrefs(); 2673 } else { 2674 window.addEventListener('load', scheduleAhrefs, { once: true }); 2675 } 2676 2677 document.addEventListener('cookieConsentAccepted', scheduleAhrefs); 2678 document.addEventListener('cookiePreferencesSaved', scheduleAhrefs); 2679 })(); 2680 </script>
2680 2681 2682 <!-- Conversion modals (generator + /models primary path) --> 2683 2684 2685 <!-- Additional Scripts --> 2686
2686<script> 2687function languageSwitcher() { 2688 return { 2689 isOpen: false, 2690 toggleDropdown() { this.isOpen = !this.isOpen; }, 2691 closeDropdown() { this.isOpen = false; }, 2692 }; 2693} 2694</script>
2694 2695
2695<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"21515c997b8746588bfd27f54f9b2816","spa":2}' crossorigin="anonymous"></script>
2695 2696</body> 2697</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.