1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3 4<head> 5
5<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-6458463561472933" 6 crossorigin="anonymous" nonce="secure123"></script>
6 7 8 <meta http-equiv="Content-Security-Policy" content=" 9 object-src 'none'; 10 base-uri 'self'; 11 script-src 'nonce-secure123' 'strict-dynamic' 'unsafe-inline' https:; 12 report-uri https://csp.withgoogle.com/csp/adwords-api; 13"> 14 15 <!-- Favicon Configuration --> 16 <link rel="icon" type="image/svg+xml" href="/favicon.svg?v=3"> 17 <link rel="icon" type="image/png" sizes="16x16" href="/favicon-16x16.png?v=3"> 18 <link rel="icon" type="image/png" sizes="32x32" href="/favicon-32x32.png?v=3"> 19 <link rel="icon" type="image/png" sizes="96x96" href="/favicon-96x96.png?v=3"> 20 <link rel="shortcut icon" href="/favicon.ico?v=3"> 21 <link rel="apple-touch-icon" sizes="180x180" href="/apple-touch-icon.png?v=3"> 22 <meta name="apple-mobile-web-app-title" content="My Tools"> 23 <link rel="manifest" href="/site.webmanifest?v=3"> 24 25 <!-- Google Analytics -->
vendor: 69 bytes, lines 25-26
25 26 <script async src="https://www.googletagmanager.com/gtag/js?id=
26G-ZCBG56HS6D
vendor: 35 bytes, lines 26-27
26" nonce="secure123"></script> 27
27<script nonce="secure123"> 28
vendor: 157 bytes, lines 28-31
28window.dataLayer = window.dataLayer || []; 29 function gtag() { dataLayer.push(arguments); } 30 gtag('js', new Date()); 31 gtag('config', '
31G-ZCBG56HS6D
vendor: 9 bytes, lines 31-32
31'); 32
32</script>
32 33 34 <!-- Security Headers --> 35 <meta http-equiv="X-Content-Type-Options" content="nosniff"> 36 <meta http-equiv="X-XSS-Protection" content="1; mode=block"> 37 <meta http-equiv="Referrer-Policy" content="strict-origin-when-cross-origin"> 38 <meta http-equiv="Permissions-Policy" content="geolocation=(), microphone=(), camera=()"> 39 40 <meta charset="UTF-8"> 41 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 42 43 <!-- ======================= START: SEO ENHANCEMENTS FOR ENGLISH VERSION ======================= --> 44 <!-- Primary Meta Tags --> 45 <title>AI Tools Hub - Discover the Best AI Tools of 2025</title> 46 <meta name="title" content="AI Tools Hub - Discover the Best AI Tools of 2025"> 47 <meta name="description" 48 content="Your comprehensive guide to the best AI tools in 2025. Discover AI tools for images, writing, coding, video, and audio, with detailed tutorials for each tool."> 49 <meta name="keywords" 50 content="AI tools, artificial intelligence, ChatGPT, DALL-E, Midjourney, free AI tools, AI tools 2025, Stable Diffusion"> 51 <meta name="author" content="AI Tools Hub"> 52 <meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"> 53 54 <!-- Language and Region --> 55 <meta name="language" content="English"> 56 <meta name="geo.region" content="US"> 57 58 <!-- Canonical URL --> 59 <link rel="canonical" href="https://www.adawatai.dev/"> 60 61 <!-- Hreflang Tags for Multilingual SEO --> 62 <link rel="alternate" hreflang="en" href="https://www.adawatai.dev/"> 63 <link rel="alternate" hreflang="ar" href="https://www.adawatai.dev/index-ar.html"> 64 <link rel="alternate" hreflang="x-default" href="https://www.adawatai.dev/"> 65 66 <!-- Open Graph / Facebook --> 67 <meta property="og:type" content="website"> 68 <meta property="og:url" content="https://www.adawatai.dev/"> 69 <meta property="og:title" content="AI Tools Hub - The Ultimate Guide to AI Tools"> 70 <meta property="og:description" 71 content="Discover the best AI tools of 2025. A comprehensive directory of 500+ AI tools for images, writing, coding, and more. Detailed reviews and free tools."> 72 <meta property="og:image" content="https://adawatai.dev/blog/img/adawatai.jpg"> 73 <meta property="og:site_name" content="AI Tools Hub"> 74 <meta property="og:locale" content="en_US"> 75 76 <!-- Twitter Card --> 77 <meta name="twitter:card" content="summary_large_image"> 78 <meta name="twitter:title" content="AI Tools Hub - The Ultimate Guide to AI Tools"> 79 <meta name="twitter:description" 80 content="Discover the best AI tools of 2025. A comprehensive directory of 500+ AI tools with detailed reviews."> 81 82 <!-- Theme and Icons --> 83 <meta name="theme-color" content="#5D5CDE"> 84 85 <!-- Preconnect for Performance --> 86 <link rel="preconnect" href="https://fonts.googleapis.com"> 87 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""> 88 <link rel="preconnect" href="https://cdnjs.cloudflare.com"> 89 <link rel="preconnect" href="https://cdn.jsdelivr.net"> 90 <link rel="preconnect" href="https://cdn.tailwindcss.com"> 91 92 <!-- Critical: Immediate Theme Initialization to prevent FOUC --> 93
93<script nonce="secure123"> 94 const SecureStorageForTheme = { 95 prefix: 'aitools_', 96 getItem(key) { 97 try { 98 const item = localStorage.getItem(this.prefix + key); 99 return item ? JSON.parse(item) : null; 100 } catch (e) { return null; } 101 }, 102 }; 103 const initTheme = () => { 104 const savedTheme = SecureStorageForTheme.getItem('darkMode'); 105 const systemPrefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches; 106 if (savedTheme === 'dark' || (!savedTheme && systemPrefersDark)) { 107 document.documentElement.classList.add('dark'); 108 } 109 }; 110 initTheme(); 111 </script>
111 112 113 <!-- Tailwind CSS --> 114
114<script nonce="secure123" src="https://cdn.tailwindcss.com"></script>
114 115
115<script nonce="secure123"> 116 tailwind.config = { 117 darkMode: 'class', 118 theme: { 119 extend: { 120 colors: { 121 primary: '#7e22ce', secondary: '#5D5CDE', dark: '#1a1a2e', 122 darker: '#0f0f1a', modalBg: '#151834', modalHeader: '#151834' 123 } 124 } 125 } 126 } 127 </script>
127 128 129 <!-- Stylesheets and Scripts --> 130 <link rel="stylesheet" nonce="secure123" 131 href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"> 132
132<script nonce="secure123" src="https://cdn.jsdelivr.net/npm/[email protected]/marked.min.js" defer></script>
132 133 134 <!-- Fonts --> 135 <!-- Performance Note: The 'Tajawal' font is for Arabic. It can be removed from this English version for a minor loading speed improvement. --> 136 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Tajawal:wght@400;500;700&display=swap"> 137 <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Outfit:wght@400;500;700&display=swap"> 138 139 <!-- Structured Data (SEO) --> 140 <!-- === SEO Structured Data (The Ultimate Homepage Schema) === --> 141
141<script type="application/ld+json" nonce="secure123"> 142 { 143 "@context": "https://schema.org", 144 "@graph": [ 145 { 146 "@type": "Organization", 147 "@id": "https://www.adawatai.dev/#organization", 148 "name": "AI Tools Hub", 149 "url": "https://www.adawatai.dev", 150 "logo": { 151 "@type": "ImageObject", 152 "url": "https://www.adawatai.dev/favicon.png", 153 "width": 512, 154 "height": 512 155 }, 156 "sameAs": [ 157 "https://twitter.com/adawatai", 158 "https://www.facebook.com/adawatai", 159 "https://www.linkedin.com/company/adawatai" 160 ], 161 "contactPoint": { 162 "@type": "ContactPoint", 163 "contactType": "customer support", 164 "email": "[email protected]" 165 } 166 }, 167 { 168 "@type": "WebSite", 169 "@id": "https://www.adawatai.dev/#website", 170 "url": "https://www.adawatai.dev", 171 "name": "AI Tools Hub", 172 "alternateName": "Best AI Tools Directory 2025", 173 "description": "Your comprehensive guide to the best AI tools in 2025. Discover free and paid AI tools for writing, coding, image generation, and video editing.", 174 "publisher": { 175 "@id": "https://www.adawatai.dev/#organization" 176 }, 177 "inLanguage": "en", 178 "potentialAction": { 179 "@type": "SearchAction", 180 "target": { 181 "@type": "EntryPoint", 182 "urlTemplate": "https://www.adawatai.dev/#tools-section?q={search_term_string}" 183 }, 184 "query-input": "required name=search_term_string" 185 } 186 }, 187 { 188 "@type": "CollectionPage", 189 "@id": "https://www.adawatai.dev/#webpage", 190 "url": "https://www.adawatai.dev", 191 "name": "AI Tools Hub - Discover Top Artificial Intelligence Software", 192 "description": "Explore 500+ curated AI tools tailored for developers, marketers, and creators. Filter by category: Text, Image, Video, Audio, and Coding.", 193 "isPartOf": { 194 "@id": "https://www.adawatai.dev/#website" 195 }, 196 "about": { 197 "@type": "Thing", 198 "name": "Artificial Intelligence Software Directory" 199 }, 200 "isAccessibleForFree": true, 201 "audience": { 202 "@type": "Audience", 203 "audienceType": "Content Creators, Developers, Marketers" 204 } 205 } 206 207 ] 208 } 209 </script>
209 210
210<script id="faq-structured-data" type="application/ld+json" nonce="secure123"></script>
210 211
211<script id="itemlist-structured-data" type="application/ld+json" nonce="secure123"></script>
211 212 <!-- ======================= END: SEO ENHANCEMENTS ======================= --> 213 214
214<script nonce="secure123"> 215 const SecurityConfig = { 216 csrfToken: null, 217 rateLimits: { 218 login: { attempts: 3, window: 300000 }, contact: { attempts: 5, window: 600000 }, 219 search: { attempts: 50, window: 60000 } 220 }, 221 generateCSRFToken() { return 'csrf_' + Math.random().toString(36).substr(2, 9) + Date.now().toString(36); }, 222 init() { this.csrfToken = this.generateCSRFToken(); this.preventClickjacking(); }, 223 preventClickjacking() { if (window.top !== window.self) { window.top.location = window.self.location; } } 224 }; 225 document.addEventListener('DOMContentLoaded', SecurityConfig.init.bind(SecurityConfig)); 226 </script>
226 227 228 <style> 229 /* Production Note: For best performance, this CSS should be moved to an external, minified stylesheet. */ 230 html[lang="ar"] { 231 font-family: 'Tajawal', sans-serif; 232 } 233 234 html[lang="en"] { 235 font-family: 'Outfit', sans-serif; 236 } 237 238 body { 239 overflow-x: hidden; 240 scroll-behavior: smooth; 241 } 242 243 #newsletter-modal-overlay { 244 display: none; 245 opacity: 0; 246 transition: opacity 0.3s ease-in-out; 247 } 248 249 #newsletter-modal-overlay.active { 250 display: flex; 251 } 252 253 #newsletter-modal-content { 254 transform: scale(0.95); 255 opacity: 0; 256 transition: all 0.3s ease-in-out; 257 } 258 259 #newsletter-modal-overlay.active #newsletter-modal-content { 260 transform: scale(1); 261 opacity: 1; 262 } 263 264 body.modal-open { 265 overflow: hidden; 266 } 267 268 html { 269 overflow-y: scroll; 270 } 271 272 .dark { 273 color-scheme: dark; 274 } 275 276 .hero-bg { 277 padding-top: 100px; 278 background: linear-gradient(45deg, #5D5CDE, #7e22ce); 279 position: relative; 280 } 281 282 .tool-card { 283 background: white; 284 border-radius: 16px; 285 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06); 286 overflow: hidden; 287 transition: all 0.3s ease; 288 will-change: transform; 289 border: 1px solid rgba(0, 0, 0, 0.05); 290 } 291 292 .dark .tool-card { 293 background: #1f2937; 294 border-color: rgba(255, 255, 255, 0.1); 295 box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.3); 296 } 297 298 .tool-card:hover { 299 transform: translateY(-8px); 300 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 301 } 302 303 .dark .tool-card:hover { 304 box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.4); 305 } 306 307 .tool-card-content { 308 padding: 20px; 309 height: 100%; 310 display: flex; 311 flex-direction: column; 312 } 313 314 .tool-card-header { 315 display: flex; 316 justify-content: space-between; 317 align-items: center; 318 margin-bottom: 16px; 319 gap: 16px; 320 } 321 322 .favorites-badge { 323 position: static; 324 flex-shrink: 0; 325 background: rgba(0, 0, 0, 0.05); 326 color: #6b7280; 327 border-radius: 50%; 328 width: 36px; 329 height: 36px; 330 display: flex; 331 align-items: center; 332 justify-content: center; 333 cursor: pointer; 334 transition: all 0.3s ease; 335 } 336 337 .dark .favorites-badge { 338 background: rgba(255, 255, 255, 0.1); 339 color: #9ca3af; 340 } 341 342 .favorites-badge:hover { 343 transform: scale(1.1); 344 color: #ef4444; 345 } 346 347 .favorites-badge.active { 348 color: #ef4444; 349 background: rgba(239, 68, 68, 0.1); 350 } 351 352 .dark .favorites-badge.active { 353 background: rgba(239, 68, 68, 0.2); 354 } 355 356 .tool-card-title { 357 font-size: 1.25rem; 358 font-weight: 700; 359 color: #1f2937; 360 line-height: 1.3; 361 margin: 0; 362 flex-grow: 1; 363 text-align: left; 364 } 365 366 .dark .tool-card-title { 367 color: #f9fafb; 368 } 369 370 .tool-card-description { 371 color: #6b7280; 372 line-height: 1.6; 373 margin-bottom: 16px; 374 flex-grow: 1; 375 font-size: 0.95rem; 376 } 377 378 .dark .tool-card-description { 379 color: #9ca3af; 380 } 381 382 .tool-card-tags-container { 383 display: flex; 384 justify-content: space-between; 385 align-items: center; 386 gap: 8px; 387 margin-bottom: 20px; 388 flex-wrap: wrap; 389 } 390 391 .pricing-tags { 392 display: flex; 393 gap: 6px; 394 flex-wrap: wrap; 395 } 396 397 .pricing-tag { 398 font-size: 0.75rem; 399 padding: 4px 8px; 400 border-radius: 12px; 401 font-weight: 500; 402 white-space: nowrap; 403 } 404 405 .tag-free { 406 background-color: #22c55e; 407 color: white; 408 } 409 410 .tag-paid { 411 background-color: #ef4444; 412 color: white; 413 } 414 415 .tag-freemium { 416 background-color: #f59e0b; 417 color: white; 418 } 419 420 .tool-card-categories { 421 display: flex; 422 flex-wrap: wrap; 423 gap: 6px; 424 } 425 426 .category-badge { 427 display: inline-flex; 428 align-items: center; 429 padding: 4px 8px; 430 border-radius: 16px; 431 font-size: 0.75rem; 432 background-color: rgba(93, 92, 222, 0.1); 433 color: #5D5CDE; 434 font-weight: 500; 435 transition: background-color 0.2s ease; 436 } 437 438 .dark .category-badge { 439 background-color: rgba(93, 92, 222, 0.2); 440 color: #a78bfa; 441 } 442 443 .category-badge:hover { 444 background-color: rgba(93, 92, 222, 0.2); 445 } 446 447 .dark .category-badge:hover { 448 background-color: rgba(93, 92, 222, 0.3); 449 } 450 451 .tool-card-actions { 452 display: flex; 453 gap: 8px; 454 margin-top: auto; 455 } 456 457 .tool-action-btn { 458 flex: 1; 459 padding: 10px 16px; 460 border-radius: 8px; 461 font-weight: 500; 462 text-align: center; 463 transition: all 0.3s ease; 464 text-decoration: none; 465 border: none; 466 cursor: pointer; 467 font-size: 0.875rem; 468 } 469 470 .tool-action-btn:hover { 471 transform: translateY(-2px); 472 box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); 473 } 474 475 .btn-primary { 476 background: linear-gradient(45deg, #5D5CDE, #7e22ce); 477 color: white; 478 } 479 480 .btn-primary:hover { 481 background: linear-gradient(45deg, #4a49b0, #6b21a8); 482 } 483 484 .btn-secondary { 485 background: rgba(93, 92, 222, 0.1); 486 color: #5D5CDE; 487 border: 1px solid rgba(93, 92, 222, 0.2); 488 } 489 490 .dark .btn-secondary { 491 background: rgba(93, 92, 222, 0.2); 492 color: #a78bfa; 493 border-color: rgba(93, 92, 222, 0.3); 494 } 495 496 .btn-secondary:hover { 497 background: rgba(93, 92, 222, 0.2); 498 color: #4a49b0; 499 } 500 501 .dark .btn-secondary:hover { 502 background: rgba(93, 92, 222, 0.3); 503 } 504 505 #advanced-search-options { 506 background: rgba(0, 0, 0, 0.2); 507 backdrop-filter: blur(15px); 508 border: 1px solid rgba(255, 255, 255, 0.1); 509 transition: all 0.4s ease-in-out; 510 max-height: 0; 511 overflow: hidden; 512 padding: 0; 513 border-radius: 12px; 514 } 515 516 #advanced-search-options.open { 517 max-height: 500px; 518 padding: 1.5rem; 519 margin-top: 1rem; 520 } 521 522 #advanced-search-options legend { 523 display: flex; 524 align-items: center; 525 gap: 0.5rem; 526 color: #d1d5db; 527 } 528 529 .custom-checkbox { 530 display: flex; 531 align-items: center; 532 cursor: pointer; 533 font-size: 0.9rem; 534 transition: color 0.2s; 535 padding: 0.25rem 0; 536 } 537 538 .custom-checkbox:hover { 539 color: white; 540 } 541 542 .custom-checkbox input { 543 display: none; 544 } 545 546 .custom-checkbox .checkmark { 547 width: 18px;
548 height: 18px; 549 border: 2px solid rgba(255, 255, 255, 0.4); 550 border-radius: 4px; 551 margin-inline-end: 10px; 552 display: flex; 553 align-items: center; 554 justify-content: center; 555 transition: all 0.2s; 556 flex-shrink: 0; 557 } 558 559 .custom-checkbox input:checked+.checkmark { 560 background-color: #5D5CDE; 561 border-color: #5D5CDE; 562 } 563 564 .custom-checkbox .checkmark::after { 565 content: '\f00c'; 566 font-family: 'Font Awesome 6 Free'; 567 font-weight: 900; 568 font-size: 12px; 569 color: white; 570 opacity: 0; 571 transform: scale(0.5); 572 transition: all 0.2s; 573 } 574 575 .custom-checkbox input:checked+.checkmark::after { 576 opacity: 1; 577 transform: scale(1); 578 } 579 580 #advanced-search-options #sort-select { 581 background-color: rgba(255, 255, 255, 0.1); 582 border: 1px solid rgba(255, 255, 255, 0.2); 583 } 584 585 #advanced-search-options .btn-adv-reset { 586 background-color: rgba(255, 255, 255, 0.1); 587 color: white; 588 } 589 590 #advanced-search-options .btn-adv-reset:hover { 591 background-color: rgba(255, 255, 255, 0.2); 592 } 593 594 #advanced-search-options .btn-adv-apply { 595 background: #5D5CDE; 596 color: white; 597 } 598 599 #advanced-search-options .btn-adv-apply:hover { 600 background: #4a49b0; 601 } 602 603 .modal .modal-content { 604 position: relative; 605 } 606 607 .favorites-badge-modal { 608 position: absolute; 609 top: 20px; 610 z-index: 5; 611 width: 40px; 612 height: 40px; 613 background: rgba(255, 255, 255, 0.1); 614 color: #e5e7eb; 615 border-radius: 50%; 616 display: flex; 617 align-items: center; 618 justify-content: center; 619 cursor: pointer; 620 transition: all 0.3s ease; 621 right: 70px; 622 } 623 624 .favorites-badge-modal:hover { 625 background: rgba(255, 255, 255, 0.2); 626 transform: scale(1.1); 627 } 628 629 .favorites-badge-modal.active { 630 color: #ef4444; 631 background: rgba(239, 68, 68, 0.2); 632 } 633 634 #favorites-modal .modal-content { 635 background-color: #1a1a2e; 636 display: flex; 637 flex-direction: column; 638 overflow: hidden; 639 } 640 641 #favorites-modal .modal-header { 642 position: sticky; 643 top: 0; 644 z-index: 10; 645 background-color: #1a1a2e; 646 flex-shrink: 0; 647 padding: 1.5rem; 648 border-bottom: 1px solid #374151; 649 display: flex; 650 align-items: center; 651 justify-content: space-between; 652 } 653 654 #favorites-modal .modal-title { 655 font-size: 1.25rem; 656 font-weight: 700; 657 } 658 659 #favorites-list { 660 flex-grow: 1; 661 overflow-y: auto; 662 padding: 1.5rem; 663 display: flex; 664 flex-direction: column; 665 gap: 1rem; 666 } 667 668 #close-favorites-modal { 669 background: none; 670 border: none; 671 color: #9ca3af; 672 font-size: 1.5rem; 673 cursor: pointer; 674 padding: 0.5rem; 675 line-height: 1; 676 transition: color 0.2s, transform 0.2s; 677 } 678 679 #close-favorites-modal:hover { 680 color: white; 681 transform: rotate(90deg); 682 } 683 684 .favorite-item { 685 display: flex; 686 align-items: center; 687 gap: 1rem; 688 padding: 1rem; 689 background-color: #1f2937; 690 border-radius: 0.75rem; 691 border: 1px solid #374151; 692 transition: background-color 0.2s ease, transform 0.2s ease; 693 } 694 695 .favorite-item:hover { 696 background-color: #374151; 697 transform: translateY(-2px); 698 } 699 700 .favorite-item-icon { 701 flex-shrink: 0; 702 width: 48px; 703 height: 48px; 704 background: #4c1d95; 705 color: white; 706 border-radius: 0.5rem; 707 display: flex; 708 align-items: center; 709 justify-content: center; 710 font-size: 1.5rem; 711 } 712 713 .favorite-item-details { 714 flex-grow: 1; 715 min-width: 0; 716 text-align: left; 717 } 718 719 .favorite-item-title { 720 font-weight: 700; 721 color: #f9fafb; 722 margin: 0; 723 white-space: nowrap; 724 overflow: hidden; 725 text-overflow: ellipsis; 726 } 727 728 .favorite-item-description { 729 font-size: 0.875rem; 730 color: #9ca3af; 731 margin-top: 0.25rem; 732 white-space: nowrap; 733 overflow: hidden; 734 text-overflow: ellipsis; 735 } 736 737 .favorite-item-actions { 738 display: flex; 739 align-items: center; 740 gap: 0.75rem; 741 } 742 743 .favorite-action-button { 744 background: none; 745 border: none; 746 cursor: pointer; 747 padding: 0.25rem; 748 transition: transform 0.2s ease, opacity 0.2s ease; 749 font-size: 1.25rem; 750 } 751 752 .favorite-action-button:hover { 753 transform: scale(1.15); 754 opacity: 0.9; 755 } 756 757 .favorite-action-view { 758 color: #a78bfa; 759 } 760 761 .favorite-action-delete { 762 color: #ef4444; 763 } 764 765 @media (max-width: 640px) { 766 .favorite-item-description { 767 display: none; 768 } 769 770 .favorite-item { 771 padding: 0.75rem 1rem; 772 } 773 774 .favorite-item-icon { 775 width: 40px; 776 height: 40px; 777 font-size: 1.25rem; 778 } 779 } 780 781 #tools-section .tab-button { 782 color: #9ca3af; 783 } 784 785 #tools-section .tab-button.active { 786 color: white; 787 } 788 789 #tools-section .quick-filter-btn { 790 background-color: #374151; 791 color: #d1d5db; 792 border-radius: 9999px; 793 transition: all 0.2s ease-in-out; 794 } 795 796 #tools-section .quick-filter-btn:hover { 797 background-color: #4b5563; 798 } 799 800 #tools-section .quick-filter-btn.active { 801 background-color: #5D5CDE; 802 color: white; 803 font-weight: 500; 804 } 805 806 #tools-section #quick-sort { 807 background-color: #374151; 808 color: #d1d5db; 809 border-color: #4b5563; 810 } 811 812 .search-container { 813 position: relative; 814 z-index: 200; 815 } 816 817 .search-input-wrapper { 818 position: relative; 819 background: rgba(255, 255, 255, 0.2); 820 backdrop-filter: blur(10px); 821 border-radius: 1rem; 822 padding: 0.5rem; 823 border: 2px solid transparent; 824 transition: all 0.3s ease; 825 } 826 827 .search-input-wrapper:focus-within { 828 border-color: rgba(255, 255, 255, 0.3); 829 background: rgba(255, 255, 255, 0.25); 830 transform: translateY(-2px); 831 box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1); 832 } 833 834 #search-icon-container { 835 position: absolute; 836 top: 50%; 837 transform: translateY(-50%); 838 inset-inline-start: 0.75rem; 839 display: flex; 840 align-items: center; 841 justify-content: center; 842 height: 40px; 843 width: 40px; 844 pointer-events: none; 845 } 846 847 #search-icon { 848 color: white; 849 height: 1.25rem; 850 width: 1.25rem; 851 } 852 853 #search-loading { 854 position: absolute;
855 width: 20px; 856 height: 20px; 857 border: 2px solid rgba(255, 255, 255, 0.3); 858 border-top: 2px solid white; 859 border-radius: 50%; 860 animation: spin-loader 1s linear infinite; 861 } 862 863 @keyframes spin-loader { 864 100% { 865 transform: rotate(360deg); 866 } 867 } 868 869 #search-input { 870 width: 100%; 871 background: transparent; 872 border: none; 873 outline: none; 874 color: white; 875 font-size: 1rem; 876 padding-block: 0.5rem; 877 padding-inline-start: 3.5rem; 878 padding-inline-end: 1rem; 879 } 880 881 #search-input::placeholder { 882 color: rgba(255, 255, 255, 0.7); 883 } 884 885 :focus-visible { 886 outline: 3px solid #a78bfa; 887 outline-offset: 2px; 888 box-shadow: 0 0 0 5px rgba(167, 139, 250, 0.3); 889 border-radius: 4px; 890 } 891 892 :focus:not(:focus-visible) { 893 outline: none; 894 } 895 896 .search-suggestions { 897 position: absolute; 898 left: 0; 899 right: 0; 900 top: 100%; 901 margin-top: 4px; 902 background: rgba(255, 255, 255, 0.95); 903 backdrop-filter: blur(10px); 904 border: 1px solid rgba(255, 255, 255, 0.2); 905 border-radius: 12px; 906 box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04); 907 max-height: 320px; 908 overflow-y: auto; 909 z-index: 999; 910 opacity: 0; 911 transform: translateY(-10px); 912 transition: opacity 0.3s ease, transform 0.3s ease; 913 scrollbar-width: thin; 914 scrollbar-color: rgba(93, 92, 222, 0.3) transparent; 915 } 916 917 .search-suggestions.visible { 918 opacity: 1; 919 transform: translateY(0); 920 } 921 922 .dark .search-suggestions { 923 background: rgba(26, 26, 46, 0.95); 924 border-color: rgba(255, 255, 255, 0.1); 925 box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.4); 926 } 927 928 .suggestion-item { 929 padding: 12px 16px; 930 cursor: pointer; 931 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 932 transition: all 0.2s ease; 933 display: flex; 934 align-items: center; 935 gap: 12px; 936 } 937 938 .dark .suggestion-item { 939 border-bottom: 1px solid rgba(255, 255, 255, 0.05); 940 } 941 942 .suggestion-item:last-child { 943 border-bottom: none; 944 } 945 946 .suggestion-item:hover, 947 .suggestion-item.selected { 948 background: rgba(93, 92, 222, 0.1); 949 transform: translateX(2px); 950 } 951 952 .dark .suggestion-item:hover, 953 .dark .suggestion-item.selected { 954 background: rgba(93, 92, 222, 0.15); 955 } 956 957 .suggestion-icon { 958 width: 32px; 959 height: 32px; 960 border-radius: 8px; 961 background: linear-gradient(45deg, #5D5CDE, #7e22ce); 962 display: flex; 963 align-items: center; 964 justify-content: center; 965 color: white; 966 font-size: 14px; 967 flex-shrink: 0; 968 } 969 970 .suggestion-content { 971 flex: 1; 972 min-width: 0; 973 } 974 975 .suggestion-title { 976 font-weight: 600; 977 font-size: 14px; 978 margin-bottom: 2px; 979 color: #1f2937; 980 line-height: 1.3; 981 } 982 983 .dark .suggestion-title { 984 color: #f9fafb; 985 } 986 987 .suggestion-highlight { 988 color: #5D5CDE; 989 background: rgba(93, 92, 222, 0.1); 990 padding: 1px 3px; 991 border-radius: 3px; 992 font-weight: 700; 993 } 994 995 .dark .suggestion-highlight { 996 color: #a78bfa; 997 background: rgba(167, 139, 250, 0.2); 998 } 999 1000 .suggestion-description { 1001 font-size: 12px; 1002 color: #6b7280; 1003 line-height: 1.3; 1004 overflow: hidden; 1005 text-overflow: ellipsis; 1006 white-space: nowrap; 1007 } 1008 1009 .dark .suggestion-description { 1010 color: #9ca3af; 1011 } 1012 1013 .suggestion-category { 1014 font-size: 11px; 1015 color: #9ca3af; 1016 background: rgba(156, 163, 175, 0.1); 1017 padding: 2px 6px; 1018 border-radius: 10px; 1019 margin-top: 4px; 1020 display: inline-block; 1021 } 1022 1023 .dark .suggestion-category { 1024 color: #6b7280; 1025 background: rgba(107, 114, 128, 0.2); 1026 } 1027 1028 .suggestion-empty { 1029 padding: 20px; 1030 text-align: center; 1031 color: #6b7280; 1032 font-size: 14px; 1033 } 1034 1035 .dark .suggestion-empty { 1036 color: #9ca3af; 1037 } 1038 1039 .suggestion-empty i { 1040 font-size: 24px; 1041 margin-bottom: 8px; 1042 display: block; 1043 opacity: 0.5; 1044 } 1045 1046 .loading-spinner {
1047 width: 20px; 1048 height: 20px; 1049 border: 3px solid rgba(255, 255, 255, .3); 1050 border-radius: 50%; 1051 border-top-color: white; 1052 animation: spin 1s ease-in-out infinite; 1053 } 1054 1055 .notification { 1056 animation: slideIn 0.3s ease-out forwards, fadeOut 0.5s ease-in 2.5s forwards; 1057 pointer-events: none; 1058 } 1059 1060 @keyframes slideIn { 1061 from { 1062 transform: translateY(-20px); 1063 opacity: 0; 1064 } 1065 1066 to { 1067 transform: translateY(0); 1068 opacity: 1; 1069 } 1070 } 1071 1072 @keyframes fadeOut { 1073 from { 1074 opacity: 1; 1075 } 1076 1077 to { 1078 opacity: 0; 1079 } 1080 } 1081 1082 .theme-toggle-btn { 1083 transition: transform 0.3s; 1084 } 1085 1086 .theme-toggle-btn:hover { 1087 transform: rotate(45deg); 1088 } 1089 1090 .tab-button { 1091 position: relative; 1092 transition: all 0.3s ease; 1093 } 1094 1095 .tab-button::after { 1096 content: ''; 1097 position: absolute; 1098 bottom: -2px; 1099 left: 0; 1100 width: 0; 1101 height: 2px; 1102 background-color: #5D5CDE; 1103 transition: width 0.3s ease; 1104 } 1105 1106 .tab-button.active::after { 1107 width: 100%; 1108 } 1109 1110 .filter-btn.active { 1111 background-color: rgba(93, 92, 222, 0.8); 1112 color: white; 1113 } 1114 1115 .scroll-indicator { 1116 position: relative; 1117 width: 30px; 1118 height: 50px; 1119 border: 2px solid rgba(255, 255, 255, 0.5); 1120 border-radius: 25px; 1121 margin: 0 auto; 1122 } 1123 1124 .scroll-indicator::before { 1125 content: ''; 1126 position: absolute; 1127 top: 6px; 1128 left: 50%; 1129 width: 6px; 1130 height: 6px; 1131 margin-left: -3px; 1132 background-color: white; 1133 border-radius: 50%; 1134 animation: scrollAnimation 2s infinite; 1135 } 1136 1137 @keyframes scrollAnimation { 1138 0% { 1139 transform: translateY(0); 1140 opacity: 1; 1141 } 1142 1143 100% { 1144 transform: translateY(24px); 1145 opacity: 0; 1146 } 1147 } 1148 1149 .back-to-top { 1150 position: fixed; 1151 bottom: 30px; 1152 right: 30px; 1153 background: linear-gradient(45deg, #5D5CDE, #7e22ce); 1154 color: white; 1155 width: 50px; 1156 height: 50px; 1157 border-radius: 50%; 1158 display: flex; 1159 align-items: center; 1160 justify-content: center; 1161 cursor: pointer; 1162 opacity: 0; 1163 visibility: hidden; 1164 transition: all 0.3s ease; 1165 box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2); 1166 z-index: 990; 1167 border: none; 1168 } 1169 1170 .back-to-top.visible { 1171 opacity: 1; 1172 visibility: visible; 1173 } 1174 1175 .back-to-top:hover { 1176 transform: translateY(-5px); 1177 box-shadow: 0 6px 15px rgba(0, 0, 0, 0.3); 1178 } 1179 1180 .fade-in { 1181 opacity: 0; 1182 transform: translateY(20px); 1183 transition: opacity 0.6s ease-out, transform 0.6s ease-out; 1184 } 1185 1186 .fade-in.appear { 1187 opacity: 1; 1188 transform: translateY(0); 1189 } 1190 1191 .modal, 1192 .auth-modal, 1193 #favorites-modal, 1194 #newsletter-modal-overlay { 1195 display: none; 1196 position: fixed; 1197 inset: 0; 1198 background-color: rgba(0, 0, 0, 0.7); 1199 z-index: 2000; 1200 overflow-y: auto; 1201 padding: 20px; 1202 transition: opacity 0.3s ease; 1203 align-items: center; 1204 justify-content: center; 1205 } 1206 1207 #favorites-modal.active, 1208 .modal.active, 1209 .auth-modal.active, 1210 #newsletter-modal-overlay.active { 1211 display: flex; 1212 } 1213
1214 .modal-content, 1215 .auth-modal-content { 1216 background-color: white; 1217 border-radius: 12px; 1218 width: 100%; 1219 max-width: 900px; 1220 max-height: 90vh; 1221 overflow-y: auto; 1222 position: relative; 1223 transform: translateY(20px); 1224 opacity: 0; 1225 transition: all 0.3s ease; 1226 } 1227 1228 .modal.active .modal-content, 1229 .auth-modal.active .auth-modal-content, 1230 #favorites-modal.active .modal-content { 1231 transform: translateY(0); 1232 opacity: 1; 1233 } 1234 1235 .modal .modal-content { 1236 background-color: #151834; 1237 color: white; 1238 } 1239 1240 #favorites-modal .modal-content { 1241 background-color: #1f2937; 1242 max-width: 48rem; 1243 max-height: 80vh; 1244 } 1245 1246 .close-modal, 1247 .auth-close-btn { 1248 position: absolute; 1249 font-size: 24px; 1250 cursor: pointer; 1251 z-index: 10; 1252 width: 40px; 1253 height: 40px; 1254 display: flex; 1255 align-items: center; 1256 justify-content: center; 1257 border-radius: 50%; 1258 transition: background-color 0.3s ease; 1259 border: none; 1260 } 1261 1262 .close-modal { 1263 top: 15px; 1264 right: 15px; 1265 background-color: rgba(255, 255, 255, 0.1); 1266 color: white; 1267 } 1268 1269 .close-modal:hover { 1270 background-color: rgba(255, 255, 255, 0.2); 1271 } 1272 1273 #breaking-news { 1274 background: linear-gradient(45deg, #5D5CDE, #7e22ce); 1275 box-shadow: 0 2px 8px rgba(0, 0, 0, 0.2); 1276 } 1277 1278 #breaking-news-label { 1279 background-color: rgba(0, 0, 0, 0.15); 1280 } 1281 1282 .news-ticker { 1283 animation: scroll-right 120s linear infinite; 1284 display: flex; 1285 align-items: center; 1286 } 1287 1288 .ticker-container-faded { 1289 position: relative; 1290 } 1291 1292 .ticker-container-faded::before, 1293 .ticker-container-faded::after { 1294 content: ''; 1295 position: absolute; 1296 top: 0; 1297 bottom: 0; 1298 width: 70px; 1299 z-index: 2; 1300 pointer-events: none; 1301 } 1302 1303 .ticker-container-faded::before { 1304 left: 0; 1305 background: linear-gradient(to right, #5D5CDE, transparent); 1306 } 1307 1308 .ticker-container-faded::after { 1309 right: 0; 1310 background: linear-gradient(to left, #7e22ce, transparent); 1311 } 1312 1313 .news-ticker-item { 1314 padding-inline-end: 3rem; 1315 position: relative; 1316 text-decoration: none; 1317 transition: opacity 0.2s; 1318 color: white; 1319 white-space: nowrap; 1320 flex-shrink: 0; 1321 } 1322 1323 .news-ticker-item:hover { 1324 opacity: 0.8; 1325 } 1326 1327 .news-ticker-item::after { 1328 content: "â¢"; 1329 position: absolute; 1330 inset-inline-end: 1.5rem; 1331 color: rgba(255, 255, 255, 0.7); 1332 } 1333 1334 .news-ticker-item:last-child::after { 1335 display: none; 1336 } 1337 1338 #breaking-news:not(.paused):hover .news-ticker { 1339 animation-play-state: paused; 1340 } 1341 1342 @keyframes scroll-right { 1343 0% { 1344 transform: translateX(-50%); 1345 } 1346 1347 100% { 1348 transform: translateX(0%); 1349 } 1350 } 1351 1352 .hero-bg { 1353 overflow: hidden; 1354 } 1355 1356 .hero-bg .container { 1357 padding-top: 50px; 1358 } 1359 1360 @media (max-width: 768px) { 1361 .search-suggestions { 1362 left: -8px; 1363 right: -8px; 1364 max-height: 280px; 1365 } 1366 1367 .suggestion-item { 1368 padding: 10px 12px; 1369 gap: 10px; 1370 } 1371 1372 .suggestion-icon { 1373 width: 28px; 1374 height: 28px; 1375 font-size: 12px; 1376 } 1377 1378 .suggestion-title { 1379 font-size: 13px; 1380 } 1381 1382 .suggestion-description { 1383 font-size: 11px; 1384 } 1385 1386 .back-to-top { 1387 bottom: 20px; 1388 right: 20px; 1389 width: 45px; 1390 height: 45px; 1391 } 1392
1393 .modal-content { 1394 width: 95%; 1395 margin: 0 auto; 1396 } 1397 1398 .tool-card-content { 1399 padding: 16px; 1400 } 1401 } 1402 1403 .container { 1404 max-width: 1200px; 1405 margin: 0 auto; 1406 padding: 0 1rem; 1407 } 1408 1409 .new-badge { 1410 display: inline-block; 1411 background-color: #22c55e; 1412 color: white; 1413 font-size: 0.65rem; 1414 font-weight: 700; 1415 padding: 2px 8px; 1416 border-radius: 10px; 1417 margin-inline-start: 8px; 1418 vertical-align: middle; 1419 text-transform: uppercase; 1420 animation: fadeInBadge 0.5s ease-out; 1421 } 1422 1423 .dark .new-badge { 1424 background-color: #4ade80; 1425 } 1426 1427 @keyframes fadeInBadge { 1428 from { 1429 opacity: 0; 1430 transform: scale(0.8); 1431 } 1432 1433 to { 1434 opacity: 1; 1435 transform: scale(1); 1436 } 1437 } 1438 </style> 1439
1439<script data-cfasync="false" src="https://cmp.gatekeeperconsent.com/min.js"></script>
1439 1440
1440<script data-cfasync="false" src="https://cmp.gatekeeperconsent.com/cmp.min.js"></script>
1440 1441 1442 <!-- 2. Header Script --> 1443
1443<script async src="//www.ezojs.com/ezoic/sa.min.js"></script>
1443 1444
1444<script> 1445 window.ezstandalone = window.ezstandalone || {}; 1446 ezstandalone.cmd = ezstandalone.cmd || []; 1447 </script>
1447 1448</head> 1449 1450<body class="dark:bg-darker text-gray-800 dark:text-gray-200"> 1451 <header class="bg-white dark:bg-dark shadow-sm sticky top-0 z-50"> 1452 <div class="container mx-auto px-4 py-3 flex items-center justify-between gap-4"> 1453 <div class="flex items-center gap-x-6 min-w-0"> 1454 <h1 class="text-xl font-bold text-primary flex-shrink-0"> 1455 <a href="#" aria-label="AI Tools Hub - Homepage">AI Tools Hub</a> 1456 </h1> 1457 <nav class="hidden lg:flex" role="navigation" aria-label="Main Menu"> 1458 <ul class="flex gap-x-6"> 1459 <li><a href="#" class="hover:text-primary nav-link active" aria-label="Homepage">Home</a> 1460 </li> 1461 1462 <!-- <li><a href="blog/index.html" class="hover:text-primary nav-link" 1463 aria-label="AI Tools Blog">Blog</a></li>--> 1464 <li><a href="library.html" class="hover:text-primary nav-link" 1465 aria-label="AI Tools Articles">library prompts</a></li> 1466 <li><a href="contact.html" class="hover:text-primary nav-link" aria-label="Contact Us">Contact 1467 Us</a></li> 1468 </ul> 1469 </nav> 1470 </div> 1471 <div class="flex items-center gap-x-3"> 1472 <button id="newsletter-btn" 1473 class="hidden lg:inline-flex items-center gap-x-2 bg-secondary text-white text-sm font-semibold px-3 py-1.5 rounded-lg hover:bg-secondary/80 transition-colors duration-300"> 1474 <i class="fas fa-envelope"></i> 1475 <span>Join Us</span> 1476 </button> 1477 <a href="index-ar.html" id="language-switcher" class="text-sm hover:underline flex-shrink-0" 1478 aria-label="Ø§ÙØªØ¨Ø¯Ù٠إÙÙ Ø§ÙØ¹Ø±Ø¨ÙØ©">Ø§ÙØ¹Ø±Ø¨ÙØ©</a> 1479 <button id="theme-toggle" 1480 class="theme-toggle-btn p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800" 1481 aria-label="Toggle dark and light mode"> 1482 <svg id="light-icon" xmlns="http://www.w3.org/2000/svg" 1483 class="h-6 w-6 hidden dark:block text-yellow-400" fill="none" viewBox="0 0 24 24" 1484 stroke="currentColor" aria-hidden="true"> 1485 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1486 d="M12 3v1m0 16v1m9-9h-1M4 12H3m15.364 6.364l-.707-.707M6.343 6.343l-.707-.707m12.728 0l-.707.707M6.343 17.657l-.707.707M16 12a4 4 0 11-8 0 4 4 0 018 0z"> 1487 </path> 1488 </svg> 1489 <svg id="dark-icon" xmlns="http://www.w3.org/2000/svg" 1490 class="h-6 w-6 block dark:hidden text-gray-700" fill="none" viewBox="0 0 24 24" 1491 stroke="currentColor" aria-hidden="true"> 1492 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1493 d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"> 1494 </path> 1495 </svg> 1496 </button> 1497 <button id="mobile-menu-toggle" 1498 class="lg:hidden p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800" aria-label="Open Menu" 1499 aria-expanded="false"> 1500 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" 1501 stroke="currentColor" aria-hidden="true"> 1502 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1503 d="M4 6h16M4 12h16M4 18h16"></path> 1504 </svg> 1505 </button> 1506 <button id="favorites-btn" 1507 class="relative p-2 rounded-full hover:bg-gray-100 dark:hover:bg-gray-800 hidden md:inline-flex" 1508 title="Favorite Tools" aria-label="View Favorite Tools"> 1509 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" 1510 stroke="currentColor"> 1511 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" 1512 d="M4.318 6.318a4.5 4.5 0 000 6.364L12 20.364l7.682-7.682a4.5 4.5 0 00-6.364-6.364L12 7.636l-1.318-1.318a4.5 4.5 0 00-6.364 0z"> 1513 </path> 1514 </svg>
1515 <span id="favorites-count" 1516 class="absolute -top-1 -right-1 bg-red-500 text-white text-xs rounded-full h-5 w-5 flex items-center justify-center hidden">0</span> 1517 </button> 1518 </div> 1519 </div> 1520 <div id="mobile-menu" 1521 class="hidden px-4 py-2 lg:hidden bg-white dark:bg-dark border-t border-gray-100 dark:border-gray-800"> 1522 <nav role="navigation" aria-label="Mobile Menu"> 1523 <ul class="space-y-2"> 1524 <li><a href="#" class="block hover:text-primary nav-link">Home</a></li> 1525 1526 <!-- <li><a href="blog/index.html" class="block hover:text-primary nav-link">Blog</a></li> --> 1527 <li><a href="library.html" class="block hover:text-primary nav-link">library 1528 prompts</a></li> 1529 <li><a href="contact.html" class="block hover:text-primary nav-link">Contact Us</a></li> 1530 <li><a href="#" class="block hover:text-primary" id="favorites-mobile">Favorites</a></li> 1531 <li><button id="newsletter-btn-mobile" 1532 class="w-full text-left py-2 text-secondary font-semibold">Join Us</button></li> 1533 </ul> 1534 </nav> 1535 </div> 1536 <section id="breaking-news" class="text-white overflow-hidden relative z-40"> 1537 <div class="flex items-center h-12"> 1538 <div id="breaking-news-label" 1539 class="py-3 font-bold text-sm whitespace-nowrap flex-shrink-0 flex items-center px-3 md:px-4"> 1540 <i class="fas fa-bolt me-2 text-yellow-300"></i> 1541 <span class="hidden md:inline">Top Stories</span> 1542 <button id="ticker-pause-btn" class="ms-2 text-white/80 hover:text-white" aria-label="Pause Ticker"> 1543 <i class="fas fa-pause text-xs"></i> 1544 </button> 1545 </div> 1546 <div class="flex-1 overflow-hidden relative ticker-container-faded"> 1547 <div id="news-ticker" class="news-ticker flex items-center"> 1548 <!-- News items will be injected here by JavaScript --> 1549 </div> 1550 </div> 1551 </div> 1552 </section> 1553 </header> 1554 1555 <div id="notification-container" class="fixed top-4 left-1/2 transform -translate-x-1/2 z-[2001]" 1556 aria-live="polite"></div> 1557 1558 <button type="button" class="back-to-top" id="backToTopBtn" aria-label="Back to top"> 1559 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6" fill="none" viewBox="0 0 24 24" stroke="currentColor" 1560 aria-hidden="true"> 1561 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 10l7-7m0 0l7 7m-7-7v18"></path> 1562 </svg> 1563 </button> 1564 1565 <div id="favorites-modal" role="dialog" aria-modal="true" aria-labelledby="favorites-modal-title"> 1566 <div class="modal-content"> 1567 <div class="modal-header"> 1568 <h3 id="favorites-modal-title" class="modal-title">Favorite Tools</h3> 1569 <button id="close-favorites-modal" aria-label="Close"> 1570 <svg xmlns="http://www.w3.org/2000/svg" class="h-6 w-6 pointer-events-none" fill="none"
1571 viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> 1572 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"> 1573 </path> 1574 </svg> 1575 </button> 1576 </div> 1577 <div id="favorites-list"> 1578 <!-- Favorite items will be injected here --> 1579 </div> 1580 </div> 1581 </div> 1582 1583 <main> 1584 <section class="hero-bg py-12 px-4 text-white"> 1585 <!-- === START: Viral Video Prompts Ad Box === --> 1586 <div class="max-w-3xl mx-auto mb-8 fade-in px-4" dir="ltr"> 1587 <div class="relative overflow-visible bg-gradient-to-r from-red-600/10 via-orange-500/10 to-red-600/5 border border-red-500/30 rounded-2xl p-4 md:p-5 flex flex-col md:flex-row items-center justify-between gap-4 shadow-lg group"> 1588 1589 <!-- New / Trending Badge --> 1590 <div class="absolute -top-3 -left-3 z-20"> 1591 <span class="flex items-center gap-1 bg-gradient-to-r from-red-600 to-orange-500 text-white text-[10px] font-black px-3 py-1 rounded-full shadow-xl animate-bounce"> 1592 TRENDING! ð¥ 1593 </span> 1594 </div> 1595 1596 <div class="flex items-center gap-4 text-center md:text-left relative z-10 w-full md:w-auto"> 1597 <!-- Large Icon (Video / Play Icon) --> 1598 <div class="hidden md:flex w-12 h-12 bg-gradient-to-br from-red-600 to-orange-500 text-white rounded-xl items-center justify-center text-xl shadow-[0_0_15px_rgba(239,68,68,0.4)] transform rotate-3 group-hover:rotate-0 transition-transform duration-300 flex-shrink-0"> 1599 <i class="fas fa-play-circle"></i> 1600 </div> 1601 1602 <div class="flex flex-col items-center md:items-start w-full"> 1603 <h2 class="text-lg font-black text-gray-900 dark:text-white leading-tight"> 1604 Free Trending Video Prompts | <span class="text-red-500 underline decoration-wavy decoration-2 underline-offset-4">Create Your Videos Now!</span> 1605 </h2> 1606 <p class="text-gray-500 dark:text-gray-400 text-xs md:text-sm mt-1 mb-2"> 1607 Turn your ideas and images into stunning cinematic videos that go viral on TikTok and Instagram. 1608 </p> 1609 </div> 1610 </div> 1611 1612 <!-- Action Button --> 1613 <a href="prompt/viral-video-prompts.html" class="relative z-10 whitespace-nowrap bg-gradient-to-r from-red-600 to-orange-500 text-white text-sm font-bold px-6 py-2.5 rounded-xl hover:from-red-500 hover:to-orange-400 transition-all shadow-[0_4px_15px_rgba(239,68,68,0.3)] hover:scale-105 active:scale-95 flex items-center gap-2 overflow-hidden self-center md:self-auto mt-2 md:mt-0"> 1614 <span class="absolute inset-0 bg-white/20 skew-x-12 translate-x-[-150%] group-hover:translate-x-[150%] transition-transform duration-700"></span> 1615 <span>Viral Prompts</span> 1616 <i class="fas fa-video text-xs"></i> 1617 </a> 1618 </div> 1619 </div> 1620 <!-- === END: Viral Video Prompts Ad Box === --> 1621<!-- 1622<a href="https://tinyurl.com/ydjw4m6v" target="_blank" rel="noopener noreferrer" 1623 class="max-w-4xl mx-auto mb-8 fade-in px-4 relative z-30 block hover:no-underline group"> 1624 1625 <div class="relative overflow-hidden bg-[#151834] border border-white/10 rounded-[2rem] p-5 md:p-8 shadow-2xl transition-all duration-300 group-hover:border-white/20"> 1626 1627 <div class="absolute top-4 right-6 z-30"> 1628 <span class="bg-yellow-400 text-black text-[8px] font-black px-3 py-1 rounded-full shadow-lg uppercase tracking-tighter flex items-center gap-1"> 1629 <i class="fas fa-crown text-[7px]"></i> Pinned Featured 1630 </span> 1631 </div> 1632 1633 <div class="flex flex-col lg:flex-row items-center justify-between gap-6 lg:gap-4 relative z-10"> 1634 1635 <div class="flex-grow flex flex-col items-center lg:items-start text-center lg:text-left max-w-md"> 1636 1637 <div class="flex items-center gap-4 mb-3"> 1638 <div class="flex-shrink-0 w-10 h-10 md:w-12 md:h-12 bg-white rounded-full p-0 overflow-hidden shadow-2xl flex items-center justify-center border-2 border-white/20"> 1639 <img src="img/atoms-logo.png" alt="Atoms Logo" class="w-full h-full object-contain transform scale-150"> 1640 </div> 1641 <div> 1642 <h2 class="text-xl md:text-2xl font-black text-white leading-none"> 1643 Atoms <span class="text-blue-400">AI Team</span> 1644 </h2> 1645 <p class="hidden sm:block text-white/20 text-[9px] uppercase tracking-widest mt-1 font-bold"> 1646 Official Partner 2026</p> 1647 </div> 1648 </div> 1649 1650 <p class="text-white/60 text-xs md:text-sm leading-relaxed mb-4"> 1651 Turns your ideas into business. <span class="hidden md:inline">Researches, designs, and builds your full-stack app with <span class="text-white font-medium">Auth & Payments solved.</span></span> 1652 </p> 1653 1654 <div class="hidden sm:flex flex-wrap justify-center lg:justify-start gap-x-4 gap-y-2 mb-6"> 1655 <div class="flex items-center gap-1.5"> 1656 <i class="fas fa-check-circle text-blue-500 text-[10px]"></i>
1657 <span class="text-white/70 text-[10px] font-medium">Multi-Agent</span> 1658 </div> 1659 <div class="flex items-center gap-1.5 border-l border-white/10 pl-4"> 1660 <i class="fas fa-check-circle text-indigo-400 text-[10px]"></i> 1661 <span class="text-white/70 text-[10px] font-medium">Deep Research</span> 1662 </div> 1663 <div class="flex items-center gap-1.5 border-l border-white/10 pl-4"> 1664 <i class="fas fa-check-circle text-purple-400 text-[10px]"></i> 1665 <span class="text-white/70 text-[10px] font-medium">Race Mode</span> 1666 </div> 1667 </div> 1668 1669 <div class="flex items-center gap-4"> 1670 <div class="bg-white text-black font-black px-8 py-2.5 rounded-xl transition-all shadow-xl flex items-center gap-2 text-xs group-hover:bg-yellow-400"> 1671 <span>Launch Idea</span> 1672 <i class="fas fa-rocket text-[10px]"></i> 1673 </div> 1674 <span class="hidden sm:block text-white/20 text-[9px] font-bold uppercase tracking-widest">Free trial</span> 1675 </div> 1676 </div> 1677 1678 <div class="w-full lg:w-[380px] h-48 md:h-56 relative group mt-4 lg:mt-0"> 1679 <div id="atoms-slideshow-en" class="relative w-full h-full rounded-[1.5rem] overflow-hidden border border-white/10 shadow-2xl"> 1680 <img src="img/Multi-Agent (2).png" class="absolute inset-0 w-full h-full object-cover transition-opacity duration-1000 opacity-100 slide-item-en" alt="Slide 1"> 1681 <img src="img/Deep Research (2).png" class="absolute inset-0 w-full h-full object-cover transition-opacity duration-1000 opacity-0 slide-item-en" alt="Slide 2"> 1682 <img src="img/Race Mode (2).png" class="absolute inset-0 w-full h-full object-cover transition-opacity duration-1000 opacity-0 slide-item-en" alt="Slide 3"> 1683 <img src="img/Data Analytics.png" class="absolute inset-0 w-full h-full object-cover transition-opacity duration-1000 opacity-0 slide-item-en" alt="Slide 3"> 1684 <img src="img/Atoms Backend.png" class="absolute inset-0 w-full h-full object-cover transition-opacity duration-1000 opacity-0 slide-item-en" alt="Slide 3"> 1685 </div> 1686 1687 <div id="slide-caption-en" class="absolute -bottom-2 left-1/2 -translate-x-1/2 bg-blue-600 text-[9px] text-white px-4 py-1 rounded-full font-bold shadow-lg z-20 whitespace-nowrap uppercase border border-white/20"> 1688 Multi-Agent Build 1689 </div> 1690 </div> 1691 1692 </div> 1693 </div> 1694</a>--> 1695 <!-- === END: PREMIUM FEATURED BANNER === --> 1696 1697 <div class="container mx-auto text-center"> 1698 <h2 class="text-3xl md:text-4xl font-bold mb-3 fade-in">Discover the Most Powerful AI Tools</h2> 1699 <p class="text-lg mb-8 fade-in">The largest collection of AI tools, categorized by their use cases and 1700 the fields they serve.</p> 1701 <div class="max-w-2xl mx-auto mb-8 fade-in relative z-20"> 1702 <div class="search-container"> 1703 <div class="search-input-wrapper"> 1704 <div id="search-icon-container"> 1705 <svg id="search-icon" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" 1706 stroke-width="1.5" stroke="currentColor"> 1707 <path stroke-linecap="round" stroke-linejoin="round" 1708 d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" /> 1709 </svg> 1710 <div id="search-loading" class="hidden"></div> 1711 </div> 1712 <input type="text" id="search-input" 1713 placeholder="Search for a tool or function (e.g., content writing)..." 1714 class="placeholder:text-white" maxlength="100" role="searchbox" 1715 aria-label="Search AI Tools" autocomplete="off"> 1716 </div> 1717 <div id="search-suggestions" class="search-suggestions hidden" role="listbox" 1718 aria-label="Search suggestions"></div> 1719 </div> 1720 <div class="flex flex-wrap justify-center gap-2 mt-4" role="group" aria-label="Quick Filters"> 1721 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn active" 1722 data-category="all" aria-pressed="true">All</button> 1723 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1724 data-category="image" aria-pressed="false">Images</button> 1725 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1726 data-category="text" aria-pressed="false">Writing</button> 1727 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1728 data-category="code" aria-pressed="false">Coding</button> 1729 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1730 data-category="video" aria-pressed="false">Video</button> 1731 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1732 data-category="audio" aria-pressed="false">Audio</button> 1733 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1734 data-category="music" aria-pressed="false">Music</button> 1735 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1736 data-category="design" aria-pressed="false">Design</button> 1737 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1738 data-category="marketing" aria-pressed="false">Marketing</button> 1739 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1740 data-category="productivity" aria-pressed="false">Productivity</button> 1741 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1742 data-category="translation" aria-pressed="false">Translation</button> 1743 <button class="px-3 py-1 rounded-full bg-white/20 hover:bg-white/30 text-sm filter-btn" 1744 data-category="3d" aria-pressed="false">3D</button> 1745 </div> 1746 <button id="advanced-search-toggle" class="mt-4 text-sm flex items-center mx-auto" 1747 aria-expanded="false">
1748 <span>Advanced Search Options</span> 1749 <svg id="chevron-down" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 ml-1" fill="none" 1750 viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> 1751 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"> 1752 </path> 1753 </svg> 1754 <svg id="chevron-up" xmlns="http://www.w3.org/2000/svg" class="h-4 w-4 ml-1 hidden" fill="none" 1755 viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true"> 1756 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M5 15l7-7 7 7"> 1757 </path> 1758 </svg> 1759 </button> 1760 <div id="advanced-search-options" class="rounded-lg"> 1761 <div class="grid grid-cols-1 md:grid-cols-3 gap-6"> 1762 <div> 1763 <legend class="font-medium mb-3 text-lg"><i 1764 class="fas fa-dollar-sign fa-fw mr-2 opacity-70"></i><span>Subscription 1765 Type</span></legend> 1766 <div class="space-y-3"> 1767 <label class="custom-checkbox" for="sub-filter-free"><input type="checkbox" 1768 class="subscription-filter" value="free" id="sub-filter-free"><span 1769 class="checkmark"></span><span>Free</span></label> 1770 <label class="custom-checkbox" for="sub-filter-paid"><input type="checkbox" 1771 class="subscription-filter" value="paid" id="sub-filter-paid"><span 1772 class="checkmark"></span><span>Paid</span></label> 1773 <label class="custom-checkbox" for="sub-filter-freemium"><input type="checkbox" 1774 class="subscription-filter" value="freemium" id="sub-filter-freemium"><span 1775 class="checkmark"></span><span>Freemium</span></label> 1776 </div> 1777 </div> 1778 <div> 1779 <legend class="font-medium mb-3 text-lg"><i 1780 class="fas fa-folder-open fa-fw mr-2 opacity-70"></i><span>Category</span> 1781 </legend> 1782 <div class="space-y-3"> 1783 <label class="custom-checkbox" for="cat-filter-text"><input type="checkbox" 1784 class="category-filter" value="text" id="cat-filter-text"><span 1785 class="checkmark"></span><span>Text</span></label> 1786 <label class="custom-checkbox" for="cat-filter-image"><input type="checkbox" 1787 class="category-filter" value="image" id="cat-filter-image"><span 1788 class="checkmark"></span><span>Image</span></label> 1789 <label class="custom-checkbox" for="cat-filter-audio"><input type="checkbox" 1790 class="category-filter" value="audio" id="cat-filter-audio"><span 1791 class="checkmark"></span><span>Audio</span></label> 1792 <label class="custom-checkbox" for="cat-filter-video"><input type="checkbox" 1793 class="category-filter" value="video" id="cat-filter-video"><span 1794 class="checkmark"></span><span>Video</span></label> 1795 <label class="custom-checkbox" for="cat-filter-code"><input type="checkbox" 1796 class="category-filter" value="code" id="cat-filter-code"><span 1797 class="checkmark"></span><span>Coding</span></label> 1798 </div> 1799 </div> 1800 <div class="space-y-6"> 1801 <div> 1802 <label for="sort-select" class="font-medium mb-2 block text-lg"><i 1803 class="fas fa-sort-amount-down fa-fw mr-2 opacity-70"></i><span>Sort 1804 Results</span></label>
1805 <select id="sort-select" class="w-full rounded-lg p-2 text-white"> 1806 <option value="popular">Most Popular</option> 1807 <option value="newest">Newest</option> 1808 <option value="oldest">Oldest</option> 1809 <option value="name-asc">Alphabetical (A-Z)</option> 1810 <option value="name-desc">Alphabetical (Z-A)</option> 1811 <option value="rating">Top Rated</option> 1812 </select> 1813 </div> 1814 <div> 1815 <legend class="font-medium mb-3 text-lg"><i 1816 class="fas fa-star fa-fw mr-2 opacity-70"></i><span>Additional 1817 Options</span></legend> 1818 <div class="space-y-3"> 1819 <label class="custom-checkbox" for="feat-filter-api"><input type="checkbox" 1820 class="feature-filter" value="api" id="feat-filter-api"><span 1821 class="checkmark"></span><span>API Support</span></label> 1822 <label class="custom-checkbox" for="feat-filter-mobile"><input type="checkbox" 1823 class="feature-filter" value="mobile" id="feat-filter-mobile"><span 1824 class="checkmark"></span><span>Mobile App Support</span></label> 1825 </div> 1826 </div> 1827 </div> 1828 </div> 1829 <div class="flex justify-center mt-6 gap-4 border-t border-white/10 pt-4"> 1830 <button id="reset-filters" 1831 class="px-6 py-2 rounded-lg font-medium btn-adv-reset">Reset</button> 1832 <button id="apply-filters" class="px-6 py-2 rounded-lg font-medium btn-adv-apply">Apply 1833 Filters</button> 1834 </div> 1835 </div> 1836 </div> 1837 <div class="mt-8 text-center fade-in"> 1838 <div class="scroll-indicator" aria-hidden="true"></div> 1839 <p class="mt-2 text-sm opacity-80">Scroll down to explore tools</p> 1840 </div> 1841 </div> 1842 </section> 1843 1844 <section id="tools-section" class="py-12 px-4 bg-dark text-gray-300"> 1845 <div class="container mx-auto"> 1846 <div class="mb-8 text-center fade-in"> 1847 <h2 class="text-2xl font-bold mb-3 text-white">AI Tools Directory</h2> 1848 <p class="text-gray-400 mb-4 max-w-3xl mx-auto">Explore a comprehensive collection of AI tools, 1849 organized by category and popularity. Filter the results to find the perfect tool for your 1850 needs.</p> 1851 <div id="total-tools-display" class="text-sm text-gray-500 mb-8"></div> 1852 </div> 1853 <div class="border-b border-gray-700 mb-8 fade-in" id="tabs-container"> 1854 <div class="flex flex-wrap -mb-px justify-center" role="tablist" aria-label="Tool Sections"> 1855 <button class="tab-button px-4 py-3 text-sm font-medium border-b-2 border-transparent active" 1856 data-tab="all" role="tab" aria-selected="true">All Tools</button> 1857 <button class="tab-button px-4 py-3 text-sm font-medium border-b-2 border-transparent" 1858 data-tab="newest" role="tab" aria-selected="false">Newest Tools</button> 1859 <button class="tab-button px-4 py-3 text-sm font-medium border-b-2 border-transparent" 1860 data-tab="free" role="tab" aria-selected="false">Free Tools</button> 1861 <button class="tab-button px-4 py-3 text-sm font-medium border-b-2 border-transparent" 1862 data-tab="favorites" role="tab" aria-selected="false">Favorites</button> 1863 <button class="tab-button px-4 py-3 text-sm font-medium border-b-2 border-transparent" 1864 data-tab="popular" role="tab" aria-selected="false">Popular Tools</button> 1865 </div> 1866 </div> 1867 <div class="flex flex-wrap justify-center gap-3 text-center mb-8 fade-in" role="group" 1868 aria-label="Category Filters"> 1869 <button class="quick-filter-btn px-4 py-2 text-sm active" data-category="all" 1870 aria-pressed="true">All</button> 1871 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="image" 1872 aria-pressed="false">Images</button> 1873 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="text" 1874 aria-pressed="false">Writing</button> 1875 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="code" 1876 aria-pressed="false">Coding</button> 1877 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="video" 1878 aria-pressed="false">Video</button> 1879 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="audio" 1880 aria-pressed="false">Audio</button> 1881 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="music" 1882 aria-pressed="false">Music</button> 1883 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="design" 1884 aria-pressed="false">Design</button> 1885 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="marketing" 1886 aria-pressed="false">Marketing</button> 1887 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="productivity" 1888 aria-pressed="false">Productivity</button> 1889 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="translation" 1890 aria-pressed="false">Translation Tools</button> 1891 <button class="quick-filter-btn px-4 py-2 text-sm" data-category="3d" 1892 aria-pressed="false">3D</button> 1893 </div> 1894 <div class="flex justify-between items-center mb-6 fade-in"> 1895 <p id="results-count" class="text-sm text-gray-400">
1895Showing <span 1896 class="font-medium text-white">9</span> tools</p> 1897 <div class="flex items-center"> 1898 <label for="quick-sort" class="text-sm text-gray-400 mr-2">Sort by:</label> 1899 <select id="quick-sort" class="text-sm rounded px-2 py-1"> 1900 <option value="popular">Most Popular</option> 1901 <option value="newest">Newest</option> 1902 <option value="name-asc">Alphabetical (A-Z)</option> 1903 <option value="rating">Top Rated</option> 1904 </select> 1905 </div> 1906 </div> 1907 <div id="tools-container" class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6"></div> 1908 <div class="text-center mt-8 fade-in"> 1909 <button id="load-more-tools" 1910 class="px-6 py-3 bg-primary text-white rounded-lg hover:bg-primary/90 transition flex items-center mx-auto"> 1911 <span>Load More</span> 1912 <svg xmlns="http://www.w3.org/2000/svg" class="h-4 w-4" fill="none" viewBox="0 0 24 24" 1913 stroke="currentColor" aria-hidden="true"> 1914 <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"> 1915 </path> 1916 </svg> 1917 </button> 1918 </div> 1919 </div> 1920 </section> 1921 1922 <section class="py-12 px-4 bg-white dark:bg-darker fade-in"> 1923 <div class="container mx-auto text-center"> 1924 <h2 class="text-2xl font-bold mb-4">About the AI Tools Directory</h2> 1925 <p class="text-gray-600 dark:text-gray-300 mb-8 max-w-3xl mx-auto">We bring you the latest and greatest 1926 AI tools, complete with comprehensive information. Choose the right tool for your needs by browsing 1927 our extensive directory.</p> 1928 <div class="grid grid-cols-2 md:grid-cols-4 gap-8 max-w-3xl mx-auto"> 1929 <div class="bg-white dark:bg-dark rounded-lg p-6 shadow-sm fade-in" data-delay="100"> 1930 <div class="text-primary text-3xl font-bold counter" data-target="25">0</div> 1931 <div class="text-gray-600 dark:text-gray-300">Different Categories</div> 1932 </div> 1933 <div class="bg-white dark:bg-dark rounded-lg p-6 shadow-sm fade-in" data-delay="200"> 1934 <div class="text-primary text-3xl font-bold counter" data-target="100">0</div> 1935 <div class="text-gray-600 dark:text-gray-300">Free Services</div> 1936 </div> 1937 <div class="bg-white dark:bg-dark rounded-lg p-6 shadow-sm fade-in" data-delay="300"> 1938 <div class="text-primary text-3xl font-bold counter" data-target="10000">0</div> 1939 <div class="text-gray-600 dark:text-gray-300">Registered Users</div> 1940 </div> 1941 <div class="bg-white dark:bg-dark rounded-lg p-6 shadow-sm fade-in" data-delay="400"> 1942 <div class="text-primary text-3xl font-bold counter" data-target="500">0</div> 1943 <div class="text-gray-600 dark:text-gray-300">AI Tools</div> 1944 </div> 1945 </div> 1946 </div> 1947 </section> 1948 1949 <section id="contact-section" class="py-12 px-4 bg-gray-50 dark:bg-dark fade-in"> 1950 <div class="container mx-auto"> 1951 <h2 class="text-2xl font-bold mb-8 text-center">Contact Us</h2> 1952 <div class="grid grid-cols-1 md:grid-cols-2 gap-8"> 1953 <div class="bg-white dark:bg-darker rounded-lg shadow-sm p-6 fade-in" data-delay="100"> 1954 <h3 class="font-bold text-xl mb-4">Contact Information</h3> 1955 <div class="space-y-4"> 1956 <div> 1957 <h4 class="font-medium">Address</h4> 1958 <p class="text-gray-600 dark:text-gray-300">Rabat, Kingdom of Morocco</p> 1959 </div> 1960 <div> 1961 <h4 class="font-medium">Email Address</h4> 1962 <p class="text-gray-600 dark:text-gray-300"><a href="mailto:[email protected]" 1963 class="hover:text-primary">[email protected]</a></p> 1964 </div> 1965 <div> 1966 <h4 class="font-medium">Phone Number</h4> 1967 <p class="text-gray-600 dark:text-gray-300"><a href="tel:+212 626952174" 1968 class="hover:text-primary" dir="ltr">+212 626 952 171</a></p> 1969 </div> 1970 <!--<div> 1971 <h4 class="font-medium">Social Media</h4> 1972 <div class="flex gap-x-3 mt-2"> 1973 <a href="#" class="text-gray-600 dark:text-gray-300 hover:text-primary" 1974 aria-label="Follow us on LinkedIn"><svg xmlns="http://www.w3.org/2000/svg" 1975 width="20" height="20" fill="currentColor" class="bi bi-linkedin"
1976 viewBox="0 0 16 16" aria-hidden="true"> 1977 <path 1978 d="M0 1.146C0 .513.526 0 1.175 0h13.65C15.474 0 16 .513 16 1.146v13.708c0 .633-.526 1.146-1.175 1.146H1.175C.526 16 0 15.487 0 14.854V1.146zm4.943 12.248V6.169H2.542v7.225h2.401zm-1.2-8.212c.837 0 1.358-.554 1.358-1.248-.015-.709-.52-1.248-1.342-1.248-.822 0-1.359.54-1.359 1.248 0 .694.521 1.248 1.327 1.248h.016zm4.908 8.212V9.359c0-.216.016-.432.08-.586.173-.431.568-.878 1.232-.878.869 0 1.216.662 1.216 1.634v3.865h2.401V9.25c0-2.22-1.184-3.252-2.764-3.252-1.274 0-1.845.7-2.165 1.193v.025h-.016a5.54 5.54 0 0 1 .016-.025V6.169h-2.4c.03.678 0 7.225 0 7.225h2.4z"> 1979 </path> 1980 </svg></a> 1981 <a href="mailto:[email protected]" 1982 class="text-gray-600 dark:text-gray-300 hover:text-primary" 1983 aria-label="Email us"><svg xmlns="http://www.w3.org/2000/svg" width="20" 1984 height="20" fill="currentColor" class="bi bi-envelope" viewBox="0 0 16 16" 1985 aria-hidden="true"> 1986 <path 1987 d="M0 4a2 2 0 0 1 2-2h12a2 2 0 0 1 2 2v8a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2V4Zm2-1a1 1 0 0 0-1 1v.217l7 4.2 7-4.2V4a1 1 0 0 0-1-1H2Zm13 2.383-4.708 2.825L15 11.105V5.383Zm-.034 6.876-5.64-3.471L8 9.583l-1.326-.795-5.64 3.47A1 1 0 0 0 2 13h12a1 1 0 0 0 .966-.741ZM1 11.105l4.708-2.897L1 5.383v5.722Z"> 1988 </path> 1989 </svg></a> 1990 <a href="#" class="text-gray-600 dark:text-gray-300 hover:text-primary" 1991 aria-label="Follow us on Facebook"><svg xmlns="http://www.w3.org/2000/svg" 1992 width="20" height="20" fill="currentColor" class="bi bi-facebook"
1993 viewBox="0 0 16 16" aria-hidden="true"> 1994 <path 1995 d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951z"> 1996 </path> 1997 </svg></a> 1998 <a href="#" class="text-gray-600 dark:text-gray-300 hover:text-primary" 1999 aria-label="Follow us on Twitter"><svg xmlns="http://www.w3.org/2000/svg" 2000 width="20" height="20" fill="currentColor" class="bi bi-twitter" 2001 viewBox="0 0 16 16" aria-hidden="true"> 2002 <path 2003 d="M5.026 15c6.038 0 9.341-5.003 9.341-9.334 0-.14 0-.282-.006-.422A6.685 6.685 0 0 0 16 3.542a6.658 6.658 0 0 1-1.889.518 3.301 3.301 0 0 0 1.447-1.817 6.533 6.533 0 0 1-2.087.793A3.286 3.286 0 0 0 7.875 6.03a9.325 9.325 0 0 1-6.767-3.429 3.289 3.289 0 0 0 1.018 4.382A3.323 3.323 0 0 1 .64 6.575v.045a3.288 3.288 0 0 0 2.632 3.218 3.203 3.203 0 0 1-.865.115 3.23 3.23 0 0 1-.614-.057 3.283 3.283 0 0 0 3.067 2.277A6.588 6.588 0 0 1 .78 13.58a6.32 6.32 0 0 1-.78-.045A9.344 9.344 0 0 0 5.026 15z"> 2004 </path> 2005 </svg></a> 2006 </div> 2007 </div>--> 2008 </div> 2009 </div> 2010 <div class="bg-white dark:bg-darker rounded-lg shadow-sm p-6 fade-in" data-delay="200"> 2011 <form id="contact-form" action="https://formspree.io/f/xnnvgkrb" method="POST"> 2012 <div class="mb-4"> 2013 <label for="name" class="block mb-2">Name</label> 2014 <input type="text" id="name" name="name" 2015 class="w-full bg-gray-50 dark:bg-dark border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-2 text-base" 2016 required="" maxlength="50" aria-describedby="name-error"> 2017 <div id="name-error" class="text-red-500 text-xs mt-1 hidden" role="alert"></div> 2018 </div> 2019 <div class="mb-4"> 2020 <label for="email" class="block mb-2">Email</label> 2021 <input type="email" id="email" name="email" 2022 class="w-full bg-gray-50 dark:bg-dark border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-2 text-base" 2023 required="" maxlength="254" aria-describedby="email-error"> 2024 <div id="email-error" class="text-red-500 text-xs mt-1 hidden" role="alert"></div> 2025 </div> 2026 <div class="mb-4"> 2027 <label for="subject" class="block mb-2">Subject</label> 2028 <input type="text" id="subject" name="subject" 2029 class="w-full bg-gray-50 dark:bg-dark border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-2 text-base" 2030 required="" maxlength="100" aria-describedby="subject-error"> 2031 <div id="subject-error" class="text-red-500 text-xs mt-1 hidden" role="alert"></div> 2032 </div> 2033 <div class="mb-4"> 2034 <label for="message" class="block mb-2">Message</label> 2035 <textarea id="message" name="message" rows="4" 2036 class="w-full bg-gray-50 dark:bg-dark border border-gray-300 dark:border-gray-700 rounded-lg px-4 py-2 text-base" 2037 required="" maxlength="1000" aria-describedby="message-error"></textarea>
2038 <div id="message-error" class="text-red-500 text-xs mt-1 hidden" role="alert"></div> 2039 </div> 2040 <button type="submit" id="send-message" 2041 class="w-full bg-primary text-white py-2 rounded-lg hover:bg-primary/90 transition">Send 2042 Message</button> 2043 </form> 2044 </div> 2045 </div> 2046 </div> 2047 </section> 2048 2049 <section class="py-12 px-4 bg-primary text-white fade-in"> 2050 <div class="container mx-auto text-center"> 2051 <h2 class="text-2xl font-bold mb-3">Subscribe to Our Newsletter</h2> 2052 <p class="mb-6">Get the latest AI tool updates delivered directly to your inbox.</p> 2053 <button type="button" id="open-newsletter-modal-btn" 2054 class="bg-white text-primary font-medium px-8 py-3 rounded-lg hover:bg-gray-100 transition text-lg">Subscribe 2055 Now</button> 2056 </div> 2057 </section> 2058 </main> 2059 2060 <footer class="bg-white dark:bg-dark border-t border-gray-200 dark:border-gray-700"> 2061 <div class="container mx-auto px-4 py-8"> 2062 <div class="grid grid-cols-1 md:grid-cols-4 gap-8"> 2063 <div class="md:col-span-2"> 2064 <h3 class="text-xl font-bold text-primary mb-4">AI Tools Hub</h3> 2065 <p class="text-gray-600 dark:text-gray-400 mb-4">We provide you with the latest and best AI tools, 2066 featuring practical guides and comprehensive reviews. Discover how to leverage modern technology 2067 to grow your business and projects.</p> 2068 </div> 2069 <div> 2070 <h4 class="font-bold mb-4 text-gray-800 dark:text-white">Quick Links</h4> 2071 <ul class="space-y-2"> 2072 <li> 2073 <a href="/ads/advertise.html" class="hover:text-primary transition-colors"> 2074 Advertise with us <span class="text-[10px] text-yellow-500">â </span> 2075 </a> 2076 </li> 2077 <li><a href="index.html" 2078 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors">Home</a> 2079 </li> 2080 <!-- <li><a href="blog/index.html" 2081 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors">Blog</a> 2082 </li> --> 2083 <li><a href="library.html" 2084 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors">Tools</a> 2085 </li> 2086 <li><a href="prompt/image-editing-prompts.html" 2087 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors">Library 2088 Prompts</a> 2089 </li> 2090 </ul> 2091 </div> 2092 <div> 2093 <h4 class="font-bold mb-4 text-gray-800 dark:text-white">Content Categories</h4> 2094 <ul class="space-y-2"> 2095 <li><a href="#tools-section" 2096 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors category-footer-link" 2097 data-category="audio">Audio Generation</a></li> 2098 <li><a href="#tools-section" 2099 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors category-footer-link" 2100 data-category="video">Video Generation</a></li> 2101 <li><a href="#tools-section" 2102 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors category-footer-link" 2103 data-category="text">Text Generation</a></li> 2104 <li><a href="#tools-section" 2105 class="text-gray-600 dark:text-gray-400 hover:text-primary transition-colors category-footer-link" 2106 data-category="design">Design Tools</a></li> 2107 </ul> 2108 </div> 2109 </div> 2110 <hr class="my-8 border-gray-200 dark:border-gray-700"> 2111 <div 2112 class="flex flex-col md:flex-row justify-between items-center text-sm text-gray-500 dark:text-gray-400"> 2113 <div class="mb-4 md:mb-0"> 2114 <p>© 2025 AI Tools Hub. All rights reserved.</p> 2115 </div> 2116 <div class="flex flex-wrap gap-x-6 gap-y-2 justify-center"> 2117 <a href="privacy-policy.html" class="hover:text-primary transition-colors">Privacy Policy</a> 2118 <a href="terms-of-use.html" class="hover:text-primary transition-colors">Terms of Use</a> 2119 <a href="disclaimer.html" class="hover:text-primary transition-colors">Disclaimer</a> 2120 <a href="about-us.html" class="hover:text-primary transition-colors">About Us</a> 2121 <a href="contact.html" class="hover:text-primary transition-colors footer-link" 2122 data-target="contact">Contact Us</a> 2123 </div> 2124 </div> 2125 </div> 2126 </footer> 2127 2128 <div id="newsletter-modal-overlay" 2129 class="fixed inset-0 bg-black bg-opacity-60 z-[2002] hidden items-center justify-center p-4" role="dialog" 2130 aria-modal="true" aria-labelledby="newsletter-modal-title">
2131 <div id="newsletter-modal-content" class="bg-white dark:bg-dark w-full max-w-md rounded-xl shadow-2xl"> 2132 <div class="flex justify-between items-center p-5 border-b border-gray-200 dark:border-gray-700"> 2133 <h3 id="newsletter-modal-title" class="text-xl font-bold text-secondary">Join Our Newsletter!</h3> 2134 <button id="modal-close-btn" 2135 class="text-gray-400 hover:text-gray-800 dark:hover:text-white transition-colors" 2136 aria-label="Close"> 2137 <i class="fas fa-times text-2xl"></i> 2138 </button> 2139 </div> 2140 <div class="p-6"> 2141 <p class="mb-5 text-gray-600 dark:text-gray-300">Be the first to get the latest guides and reviews in 2142 the world of AI.</p> 2143 <form id="newsletter-modal-form" action="https://formspree.io/f/xpwryvwa" method="POST"> 2144 <div class="mb-4"> 2145 <label for="modal-email-input" 2146 class="block text-sm font-medium text-gray-700 dark:text-gray-200 mb-2">Your Email</label> 2147 <div class="relative"> 2148 <i class="fas fa-at absolute top-1/2 -translate-y-1/2 left-3 text-gray-400"></i> 2149 <input type="email" id="modal-email-input" name="email" required 2150 class="w-full pl-10 pr-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-gray-50 dark:bg-gray-700 focus:ring-2 focus:ring-secondary focus:border-secondary transition" 2151 placeholder="[email protected]"> 2152 </div> 2153 </div> 2154 <div class="mb-6"> 2155 <label for="modal-feedback-input" 2156 class="block text-sm font-medium text-gray-700 dark:text-gray-200 mb-2">Your Feedback 2157 Matters (Optional)</label> 2158 <textarea id="modal-feedback-input" name="feedback" rows="3" 2159 class="w-full px-4 py-2 border border-gray-300 dark:border-gray-600 rounded-lg bg-gray-50 dark:bg-gray-700 focus:ring-2 focus:ring-secondary focus:border-secondary transition" 2160 placeholder="Suggestions, constructive criticism, or just a thank you..."></textarea> 2161 </div> 2162 <button type="submit" id="modal-submit-btn" 2163 class="w-full bg-secondary text-white font-bold py-3 px-4 rounded-lg hover:bg-secondary/80 focus:outline-none focus:ring-4 focus:ring-indigo-300 transition-all duration-300 flex items-center justify-center"> 2164 <span>Subscribe Now</span> 2165 </button> 2166 </form> 2167 <p class="text-xs text-gray-500 mt-4 text-center">We respect your privacy. No spam.</p> 2168 </div> 2169 </div> 2170 </div> 2171 2172
2172<script nonce="secure123"> 2173 (function() { 2174 const slides = document.querySelectorAll('.slide-item-en'); 2175 const caption = document.getElementById('slide-caption-en'); 2176 const captions = ["Multi-Agent Build", "Deep Research", "Race Mode Parallel", "Data Analytics", "Atoms Backend"]; 2177 let currentSlide = 0; 2178 2179 function nextSlide() { 2180 if(!slides.length) return; 2181 slides[currentSlide].classList.remove('opacity-100'); 2182 slides[currentSlide].classList.add('opacity-0'); 2183 currentSlide = (currentSlide + 1) % slides.length; 2184 slides[currentSlide].classList.remove('opacity-0'); 2185 slides[currentSlide].classList.add('opacity-100'); 2186 caption.textContent = captions[currentSlide]; 2187 } 2188 setInterval(nextSlide, 3500); 2189 })(); 2190</script>
2190 2191 <!-- === END: COMPACT PREMIUM BANNER === --> 2192 2193
2193<script src="tools-data.js" nonce="secure123"></script>
2193 2194
2194<script src="main-tools-script.js" nonce="secure123" defer></script>
2194 2195</body> 2196 2197</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.