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

Source: https://iformat.io/avif-to-png/

  1.  
  2. <!DOCTYPE html>
  3. <html lang="en">
  4. <head>
  5.    <title>iformat.io</title>
  6.    <meta name="description"
  7.          content="iFormat.io - Your ultimate file converter and compressor. Convert JPG, PNG, HEIC, WEBP to JPG, PNG, and PDF formats. Fast and reliable file conversion made easy">
  8.    <meta charset="UTF-8">
  9.    <meta http-equiv="X-UA-Compatible" content="IE=edge">
  10.    <link rel="icon" href="/static/logo.png" type="image/png">
  11.  
  12.    <meta name="viewport" content="width=device-width, initial-scale=1.0">
  13.    <link rel="canonical" href="https://iformat.io/avif-to-png/"/>
  14.    <meta name="yandex-verification" content="b06651e96519752b"/>
  15.  
  16.  
  17.    <!-- Google tag (gtag.js) -->
  18.    <script async src="https://www.googletagmanager.com/gtag/js?id=G-K5PN90MCSZ"></script>
  19.    <script>
  20.        window.dataLayer = window.dataLayer || [];
  21.  
  22.        function gtag() {
  23.            dataLayer.push(arguments);
  24.        }
  25.  
  26.        gtag('js', new Date());
  27.  
  28.        gtag('config', 'G-K5PN90MCSZ');
  29.    </script>
  30.    <meta name="msvalidate.01" content="5CAE4943CEBF239CD78C1EE61E777102"/>
  31.    <script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-9380685558688241"
  32.            crossorigin="anonymous"></script>
  33.  
  34.    <!-- Tailwind CSS -->
  35.    <script src="https://cdn.tailwindcss.com"></script>
  36.  
  37.    
  38.  
  39.    
  40.    <script src="https://js.stripe.com/v3/"></script>
  41.  
  42.  
  43.    
  44.        
  45.  
  46.        
  47.  
  48.        
  49.  
  50.        
  51.    
  52.  
  53. </head>
  54. <body>
  55.  
  56.  
  57. <!-- Improved Header -->
  58. <header class="bg-white/95 backdrop-blur-lg border-b border-gray-200 sticky top-0 z-50 shadow-sm">
  59.    <div class="container mx-auto px-4 lg:px-6">
  60.        <!-- Main Header Row -->
  61.        <div class="flex items-center justify-between h-16">
  62.            <!-- Logo -->
  63.            <div class="flex items-center space-x-3">
  64.                <a href="/" class="flex items-center">
  65.                    <img src="/static/logo.svg"
  66.                         alt="iformat.io Logo"
  67.                         class="h-8 w-auto mr-2"
  68.                         width="120"
  69.                         height="32"
  70.                         loading="eager"
  71.                         decoding="sync">
  72.                    <span class="text-2xl font-normal text-blue-600">iformat.io</span>
  73.                </a>
  74.  
  75.                <!-- Desktop Navigation -->
  76.                <nav class="hidden lg:flex items-center space-x-1 ml-8">
  77.                    <!-- Convert Dropdown -->
  78.                    <div class="relative dropdown group">
  79.                        <button class="flex items-center px-4 py-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-all duration-200">
  80.                            Convert
  81.                            <svg class="w-4 h-4 ml-1 transition-transform duration-200 group-hover:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  82.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
  83.                            </svg>
  84.                        </button>
  85.  
  86.                        <!-- Mega Dropdown Menu -->
  87.                        <div class="dropdown-menu absolute top-full left-0 mt-1 bg-white rounded-xl shadow-xl border border-gray-100 z-50 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200">
  88.                            <div class="p-6">
  89.                                <div class="grid grid-cols-5 gap-6 min-w-[800px]">
  90.                                    <!-- Image Tools -->
  91.                                    <div class="space-y-3">
  92.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  93.                                            <div class="w-7 h-7 bg-gradient-to-br from-green-500 to-emerald-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  94.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  95.                                                    <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"/>
  96.                                                </svg>
  97.                                            </div>
  98.                                            Image
  99.                                        </div>
  100.                                        <ul class="space-y-1">
  101.                                            <li><a href="/image-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">Image Converter</a></li>
  102.                                            <li><a href="/jpg-to-png" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">JPG to PNG</a></li>
  103.                                            <li><a href="/png-to-jpg" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">PNG to JPG</a></li>
  104.                                            <li><a href="/heic-to-jpg" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">HEIC to JPG</a></li>
  105.                                        </ul>
  106.                                    </div>
  107.  
  108.                                    <!-- Audio Tools -->
  109.                                    <div class="space-y-3">
  110.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  111.                                            <div class="w-7 h-7 bg-gradient-to-br from-purple-500 to-violet-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  112.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  113.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"/>
  114.                                                </svg>
  115.                                            </div>
  116.                                            Audio
  117.                                        </div>
  118.                                        <ul class="space-y-1">
  119.                                            <li><a href="/audio-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">Audio Converter</a></li>
  120.                                            <li><a href="/mp3-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">MP3 Converter</a></li>
  121.                                            <li><a href="/mp4-to-mp3" class="block px-3 py-2 text-sm text-gray-600 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">MP4 to MP3</a></li>
  122.                                            <li><a href="/wav-to-mp3" class="block px-3 py-2 text-sm text-gray-600 hover:text-purple-600 hover:bg-purple-50 rounded-md transition-colors">WAV to MP3</a></li>
  123.                                        </ul>
  124.                                    </div>
  125.  
  126.                                    <!-- Video Tools -->
  127.                                    <div class="space-y-3">
  128.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  129.                                            <div class="w-7 h-7 bg-gradient-to-br from-blue-500 to-cyan-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  130.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  131.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/>
  132.                                                </svg>
  133.                                            </div>
  134.                                            Video
  135.                                        </div>
  136.                                        <ul class="space-y-1">
  137.                                            <li><a href="/video-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Video Converter</a></li>
  138.                                            <li><a href="/mp4-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">MP4 Converter</a></li>
  139.                                            <li><a href="/avi-to-mp4" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">AVI to MP4</a></li>
  140.                                            <li><a href="/mov-to-mp4" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">MOV to MP4</a></li>
  141.                                        </ul>
  142.                                    </div>
  143.  
  144.                                    <!-- Document Tools -->
  145.                                    <div class="space-y-3">
  146.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  147.                                            <div class="w-7 h-7 bg-gradient-to-br from-blue-500 to-indigo-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  148.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  149.                                                    <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"/>
  150.                                                </svg>
  151.                                            </div>
  152.                                            Document
  153.                                        </div>
  154.                                        <ul class="space-y-1">
  155.                                            <li><a href="/document-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Document Converter</a></li>
  156.                                            <li><a href="/pdf-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">PDF Converter</a></li>
  157.                                            <li><a href="/pdf-to-jpg" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">PDF to JPG</a></li>
  158.                                            <li><a href="/docx-to-pdf" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">DOCX to PDF</a></li>
  159.                                        </ul>
  160.                                    </div>
  161.  
  162.                                    <!-- Other Tools -->
  163.                                    <div class="space-y-3">
  164.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  165.                                            <div class="w-7 h-7 bg-gradient-to-br from-orange-500 to-red-500 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  166.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  167.                                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
  168.                                                </svg>
  169.                                            </div>
  170.                                            Others
  171.                                        </div>
  172.                                        <ul class="space-y-1">
  173.                                            <li><a href="/time-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-orange-600 hover:bg-orange-50 rounded-md transition-colors">Time Converter</a></li>
  174.                                            <li><a href="/unit-converter" class="block px-3 py-2 text-sm text-gray-600 hover:text-orange-600 hover:bg-orange-50 rounded-md transition-colors">Unit Converter</a></li>
  175.                                        </ul>
  176.                                    </div>
  177.                                </div>
  178.                            </div>
  179.                        </div>
  180.                    </div>
  181.  
  182.                    <!-- Compress Dropdown -->
  183.                    <div class="relative dropdown group">
  184.                        <button class="flex items-center px-4 py-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-all duration-200">
  185.                            Compress
  186.                            <svg class="w-4 h-4 ml-1 transition-transform duration-200 group-hover:rotate-180" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  187.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19 9l-7 7-7-7"/>
  188.                            </svg>
  189.                        </button>
  190.  
  191.                        <div class="dropdown-menu absolute top-full left-0 mt-1 bg-white rounded-xl shadow-xl border border-gray-100 z-50 opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200">
  192.                            <div class="p-6">
  193.                                <div class="grid grid-cols-2 gap-6 min-w-[400px]">
  194.                                    <!-- Image Compression -->
  195.                                    <div class="space-y-3">
  196.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  197.                                            <div class="w-7 h-7 bg-gradient-to-br from-green-500 to-emerald-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  198.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  199.                                                    <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"/>
  200.                                                </svg>
  201.                                            </div>
  202.                                            Image
  203.                                        </div>
  204.                                        <ul class="space-y-1">
  205.                                            <li><a href="/image-compressor" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">Image Compressor</a></li>
  206.                                            <li><a href="/png-compressor" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">PNG Compressor</a></li>
  207.                                            <li><a href="/jpg-compressor" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">JPG Compressor</a></li>
  208.                                            <li><a href="/compress-png-to-100kb" class="block px-3 py-2 text-sm text-gray-600 hover:text-green-600 hover:bg-green-50 rounded-md transition-colors">Compress PNG to 100kb</a></li>
  209.                                        </ul>
  210.                                    </div>
  211.  
  212.                                    <!-- Document Compression -->
  213.                                    <div class="space-y-3">
  214.                                        <div class="flex items-center text-sm font-semibold text-gray-900 mb-4">
  215.                                            <div class="w-7 h-7 bg-gradient-to-br from-blue-500 to-indigo-600 rounded-lg flex items-center justify-center mr-3 shadow-sm">
  216.                                                <svg class="w-4 h-4 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  217.                                                    <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"/>
  218.                                                </svg>
  219.                                            </div>
  220.                                            Document
  221.                                        </div>
  222.                                        <ul class="space-y-1">
  223.                                            <li><a href="/document-compressor" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Document Compressor</a></li>
  224.                                            <li><a href="/pdf-compressor" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">PDF Compressor</a></li>
  225.                                            <li><a href="/compress-pdf-to-1mb" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Compress PDF to 1MB</a></li>
  226.                                            <li><a href="/compress-pdf-to-500kb" class="block px-3 py-2 text-sm text-gray-600 hover:text-blue-600 hover:bg-blue-50 rounded-md transition-colors">Compress PDF to 500kb</a></li>
  227.                                        </ul>
  228.                                    </div>
  229.                                </div>
  230.                            </div>
  231.                        </div>
  232.                    </div>
  233.  
  234.                    <!-- Other Navigation Links -->
  235.                    <a href="/blog" class="px-4 py-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-colors">Blog</a>
  236.                    <a href="/donate" class="px-4 py-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-lg font-medium transition-colors">Donate</a>
  237.                </nav>
  238.            </div>
  239.  
  240.            <!-- Right Side Actions -->
  241.            <div class="flex items-center space-x-3">
  242.                <!-- Search Button -->
  243.                <button id="searchBtn" class="p-2 text-gray-600 hover:text-blue-600 hover:bg-gray-50 rounded-lg transition-colors" aria-label="Search">
  244.                    <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  245.                        <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"/>
  246.                    </svg>
  247.                </button>
  248.  
  249.                <!-- Authentication Section - Desktop Only -->
  250.                
  251.                    <!-- Guest User Actions - Desktop Only -->
  252.  
  253.  
  254.  
  255.  
  256.  
  257.  
  258.  
  259.  
  260.                
  261.  
  262.                <!-- Mobile Menu Button -->
  263.                <button id="mobileMenuBtn" class="lg:hidden p-2 text-gray-600 hover:text-blue-600 hover:bg-gray-50 rounded-lg transition-colors" aria-label="Open mobile menu">
  264.                    <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  265.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/>
  266.                    </svg>
  267.                </button>
  268.            </div>
  269.        </div>
  270.    </div>
  271. </header>
  272.  
  273. <!-- Enhanced Search Overlay -->
  274. <div id="searchOverlay" class="fixed inset-0 bg-black/20 backdrop-blur-sm z-50 hidden">
  275.    <div class="flex items-start justify-center pt-20 px-4">
  276.        <div class="w-full max-w-2xl bg-white rounded-xl shadow-2xl">
  277.            <div class="p-6">
  278.                <!-- Search Input Header -->
  279.                <div class="flex items-center mb-4">
  280.                    <svg class="w-5 h-5 text-gray-400 mr-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  281.                        <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"/>
  282.                    </svg>
  283.                    <input type="text" id="searchInput" placeholder="Search tools and converters..." class="flex-1 text-lg search-input border rounded-lg px-4 py-3 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-blue-500" autocomplete="off">
  284.                    <button id="closeSearch" class="ml-3 p-2 text-gray-400 hover:text-gray-600 transition-colors">
  285.                        <svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  286.                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
  287.                        </svg>
  288.                    </button>
  289.                </div>
  290.  
  291.                <!-- Search Results Container -->
  292.                <div id="searchResults" class="hidden">
  293.                    <div class="border-t pt-4">
  294.                        <div class="text-sm font-semibold text-gray-900 mb-3">
  295.                            <span id="resultsCount">0</span> Tools Found
  296.                        </div>
  297.                        <div id="searchResultsList" class="space-y-2 max-h-80 overflow-y-auto">
  298.                            <!-- Search results will be inserted here -->
  299.                        </div>
  300.                    </div>
  301.                </div>
  302.  
  303.                <!-- Popular Searches -->
  304.                <div id="popularSearches" class="border-t pt-4">
  305.                    <div class="text-sm font-semibold text-gray-900 mb-3">Popular Searches</div>
  306.                    <div class="flex flex-wrap gap-2">
  307.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="Image Compressor">Image Compressor</span>
  308.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="MP3 Converter">MP3 Converter</span>
  309.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="Video Converter">Video Converter</span>
  310.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="Time Converter">Time Converter</span>
  311.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="JPG to PNG">JPG to PNG</span>
  312.                        <span class="popular-search-tag px-3 py-1 bg-gray-100 text-gray-700 text-sm rounded-full cursor-pointer hover:bg-gray-200 transition-colors" data-search="AVI to MP4">AVI to MP4</span>
  313.                    </div>
  314.                </div>
  315.  
  316.                <!-- No Results State -->
  317.                <div id="noResults" class="hidden border-t pt-4">
  318.                    <div class="text-center py-8">
  319.                        <svg class="w-12 h-12 text-gray-400 mx-auto mb-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  320.                            <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9.172 16.172a4 4 0 015.656 0M9 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"/>
  321.                        </svg>
  322.                        <div class="text-lg font-medium text-gray-900 mb-2">No tools found</div>
  323.                        <p class="text-gray-600 mb-4">Try searching for a different term or browse our categories.</p>
  324.                        <button id="browseAllTools" class="text-blue-600 hover:text-blue-700 font-medium">Browse All Tools</button>
  325.                    </div>
  326.                </div>
  327.            </div>
  328.        </div>
  329.    </div>
  330. </div>
  331.  
  332. <!-- Mobile Menu -->
  333. <div id="mobileMenu" class="lg:hidden fixed inset-y-0 left-0 w-80 bg-white shadow-xl z-50 mobile-menu transform -translate-x-full transition-transform duration-300 ease-in-out">
  334.    <div class="flex flex-col h-full">
  335.        <!-- Mobile Header -->
  336.        <div class="flex items-center justify-between p-6 border-b border-gray-200">
  337.            <div class="flex items-center space-x-3">
  338.                <img src="/static/logo.svg" alt="iformat.io Logo" class="h-8 w-auto">
  339.                <span class="text-xl font-normal text-blue-600">iformat.io</span>
  340.            </div>
  341.            <button id="closeMobileMenu" class="p-2 text-gray-600 hover:text-gray-900 transition-colors">
  342.                <svg class="w-6 h-6" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  343.                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12"/>
  344.                </svg>
  345.            </button>
  346.        </div>
  347.  
  348.        <!-- Mobile Navigation -->
  349.        <div class="flex-1 overflow-y-auto p-6">
  350.            <!-- Tools Section -->
  351.            <div class="mb-6">
  352.                <div class="text-sm font-semibold text-gray-900 mb-4">TOOLS</div>
  353.                <div class="space-y-4">
  354.                    <!-- Image Tools -->
  355.                    <div>
  356.                        <div class="flex items-center text-green-600 mb-3">
  357.                            <div class="w-6 h-6 bg-gradient-to-br from-green-500 to-emerald-600 rounded-lg mr-3 flex items-center justify-center">
  358.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  359.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 16l4.586-4.586a2 2 0 012.828 0L16 16"/>
  360.                                </svg>
  361.                            </div>
  362.                            <span class="font-medium">Image</span>
  363.                        </div>
  364.                        <div class="ml-9 space-y-2">
  365.                            <a href="/image-converter" class="block text-sm text-gray-600 py-1 hover:text-green-600 transition-colors">Image Converter</a>
  366.                            <a href="/jpg-to-png" class="block text-sm text-gray-600 py-1 hover:text-green-600 transition-colors">JPG to PNG</a>
  367.                            <a href="/png-to-jpg" class="block text-sm text-gray-600 py-1 hover:text-green-600 transition-colors">PNG to JPG</a>
  368.                        </div>
  369.                    </div>
  370.  
  371.                    <!-- Audio Tools -->
  372.                    <div>
  373.                        <div class="flex items-center text-purple-600 mb-3">
  374.                            <div class="w-6 h-6 bg-gradient-to-br from-purple-500 to-violet-600 rounded-lg mr-3 flex items-center justify-center">
  375.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  376.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13"/>
  377.                                </svg>
  378.                            </div>
  379.                            <span class="font-medium">Audio</span>
  380.                        </div>
  381.                        <div class="ml-9 space-y-2">
  382.                            <a href="/audio-converter" class="block text-sm text-gray-600 py-1 hover:text-purple-600 transition-colors">Audio Converter</a>
  383.                            <a href="/mp3-converter" class="block text-sm text-gray-600 py-1 hover:text-purple-600 transition-colors">MP3 Converter</a>
  384.                        </div>
  385.                    </div>
  386.  
  387.                    <!-- Video Tools -->
  388.                    <div>
  389.                        <div class="flex items-center text-blue-600 mb-3">
  390.                            <div class="w-6 h-6 bg-gradient-to-br from-blue-500 to-cyan-600 rounded-lg mr-3 flex items-center justify-center">
  391.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  392.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14"/>
  393.                                </svg>
  394.                            </div>
  395.                            <span class="font-medium">Video</span>
  396.                        </div>
  397.                        <div class="ml-9 space-y-2">
  398.                            <a href="/video-converter" class="block text-sm text-gray-600 py-1 hover:text-blue-600 transition-colors">Video Converter</a>
  399.                            <a href="/mp4-converter" class="block text-sm text-gray-600 py-1 hover:text-blue-600 transition-colors">MP4 Converter</a>
  400.                        </div>
  401.                    </div>
  402.  
  403.                    <!-- Other Tools -->
  404.                    <div>
  405.                        <div class="flex items-center text-orange-600 mb-3">
  406.                            <div class="w-6 h-6 bg-gradient-to-br from-orange-500 to-red-500 rounded-lg mr-3 flex items-center justify-center">
  407.                                <svg class="w-3 h-3 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  408.                                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/>
  409.                                </svg>
  410.                            </div>
  411.                            <span class="font-medium">Others</span>
  412.                        </div>
  413.                        <div class="ml-9 space-y-2">
  414.                            <a href="/time-converter" class="block text-sm text-gray-600 py-1 hover:text-orange-600 transition-colors">Time Converter</a>
  415.                            <a href="/unit-converter" class="block text-sm text-gray-600 py-1 hover:text-orange-600 transition-colors">Unit Converter</a>
  416.                        </div>
  417.                    </div>
  418.                </div>
  419.            </div>
  420.  
  421.            <!-- Navigation Links -->
  422.            <div class="mb-6 space-y-2">
  423.                <a href="/blog" class="block px-3 py-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-md font-medium transition-colors">Blog</a>
  424.                <a href="/donate" class="block px-3 py-2 text-gray-700 hover:text-blue-600 hover:bg-gray-50 rounded-md font-medium transition-colors">Donate</a>
  425.            </div>
  426.        </div>
  427.  
  428.        <!-- Mobile Auth Section -->
  429.        <div class="border-t border-gray-200 p-6">
  430.            
  431.                <!-- Guest Mobile User -->
  432.  
  433.  
  434.  
  435.  
  436.  
  437.  
  438.  
  439.  
  440.            
  441.        </div>
  442.    </div>
  443. </div>
  444.  
  445. <!-- Mobile Menu Overlay -->
  446. <div id="mobileMenuOverlay" class="lg:hidden fixed inset-0 bg-black/50 z-40 hidden"></div>
  447.  
  448. <style>
  449. /* User Avatar Styling */
  450. .user-avatar {
  451.    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  452.    border: 2px solid white;
  453.    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  454. }
  455.  
  456. /* Enhanced Dropdown Animations */
  457. .dropdown .dropdown-menu {
  458.    transform: translateY(-10px);
  459.    transition: all 0.2s ease-out;
  460. }
  461.  
  462. .dropdown:hover .dropdown-menu,
  463. .dropdown.group:hover .dropdown-menu {
  464.    transform: translateY(0);
  465. }
  466.  
  467. /* Mobile Menu Animations */
  468. .mobile-menu.open {
  469.    transform: translateX(0);
  470. }
  471.  
  472. /* Search Overlay Styling */
  473. .search-overlay {
  474.    animation: fadeIn 0.2s ease-out;
  475. }
  476.  
  477. @keyframes fadeIn {
  478.    from { opacity: 0; }
  479.    to { opacity: 1; }
  480. }
  481.  
  482. .search-input {
  483.    background: rgba(255, 255, 255, 0.9);
  484.    border: 1px solid rgba(59, 130, 246, 0.3);
  485.    transition: all 0.2s ease;
  486. }
  487.  
  488. .search-input:focus {
  489.    border-color: #3b82f6;
  490.    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
  491. }
  492.  
  493. /* Search Result Items */
  494. .search-result-item {
  495.    display: flex;
  496.    align-items: center;
  497.    padding: 12px;
  498.    border-radius: 8px;
  499.    cursor: pointer;
  500.    transition: all 0.2s ease;
  501.    border: 1px solid transparent;
  502. }
  503.  
  504. .search-result-item:hover {
  505.    background: linear-gradient(135deg, #f8fafc 0%, #e2e8f0 100%);
  506.    border-color: #e2e8f0;
  507.    transform: translateY(-1px);
  508. }
  509.  
  510. .search-result-item.selected {
  511.    background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%);
  512.    border-color: #3b82f6;
  513. }
  514.  
  515. .search-result-icon {
  516.    width: 40px;
  517.    height: 40px;
  518.    border-radius: 10px;
  519.    display: flex;
  520.    align-items: center;
  521.    justify-content: center;
  522.    margin-right: 12px;
  523.    flex-shrink: 0;
  524. }
  525.  
  526. .category-image { background: linear-gradient(135deg, #10b981 0%, #059669 100%); }
  527. .category-audio { background: linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%); }
  528. .category-video { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); }
  529. .category-time { background: linear-gradient(135deg, #f97316 0%, #ea580c 100%); }
  530.  
  531. /* Scrollbar Styling */
  532. #searchResultsList::-webkit-scrollbar {
  533.    width: 6px;
  534. }
  535.  
  536. #searchResultsList::-webkit-scrollbar-track {
  537.    background: #f1f1f1;
  538.    border-radius: 3px;
  539. }
  540.  
  541. #searchResultsList::-webkit-scrollbar-thumb {
  542.    background: #c1c1c1;
  543.    border-radius: 3px;
  544. }
  545.  
  546. #searchResultsList::-webkit-scrollbar-thumb:hover {
  547.    background: #a8a8a8;
  548. }
  549.  
  550. /* Responsive Design */
  551. @media (max-width: 1024px) {
  552.    .dropdown-menu {
  553.        position: fixed !important;
  554.        top: 4rem !important;
  555.        left: 1rem !important;
  556.        right: 1rem !important;
  557.        width: auto !important;
  558.        min-width: auto !important;
  559.    }
  560.  
  561.    .dropdown-menu .grid {
  562.        grid-template-columns: repeat(2, 1fr) !important;
  563.        gap: 1rem !important;
  564.    }
  565. }
  566.  
  567. /* Accessibility Improvements */
  568. @media (prefers-reduced-motion: reduce) {
  569.    * {
  570.        animation-duration: 0.01ms !important;
  571.        animation-iteration-count: 1 !important;
  572.        transition-duration: 0.01ms !important;
  573.    }
  574. }
  575.  
  576. /* Focus Styles */
  577. button:focus-visible,
  578. a:focus-visible {
  579.    outline: 2px solid #3b82f6;
  580.    outline-offset: 2px;
  581. }
  582. </style>
  583.  
  584. <script>
  585. // Enhanced Header Functionality
  586. class HeaderManager {
  587.    constructor() {
  588.        this.initializeSearch();
  589.        this.initializeMobileMenu();
  590.        this.initializeDropdowns();
  591.        this.bindEvents();
  592.    }
  593.  
  594.    initializeSearch() {
  595.        this.searchBtn = document.getElementById('searchBtn');
  596.        this.searchOverlay = document.getElementById('searchOverlay');
  597.        this.searchInput = document.getElementById('searchInput');
  598.        this.closeSearch = document.getElementById('closeSearch');
  599.        this.searchResults = document.getElementById('searchResults');
  600.        this.searchResultsList = document.getElementById('searchResultsList');
  601.        this.popularSearches = document.getElementById('popularSearches');
  602.        this.noResults = document.getElementById('noResults');
  603.        this.resultsCount = document.getElementById('resultsCount');
  604.  
  605.        this.selectedIndex = -1;
  606.        this.currentResults = [];
  607.  
  608.        this.initializeTools();
  609.    }
  610.  
  611.    initializeMobileMenu() {
  612.        this.mobileMenuBtn = document.getElementById('mobileMenuBtn');
  613.        this.mobileMenu = document.getElementById('mobileMenu');
  614.        this.mobileMenuOverlay = document.getElementById('mobileMenuOverlay');
  615.        this.closeMobileMenu = document.getElementById('closeMobileMenu');
  616.    }
  617.  
  618.    initializeDropdowns() {
  619.        // Enhanced dropdown functionality for better UX
  620.        const dropdowns = document.querySelectorAll('.dropdown');
  621.        dropdowns.forEach(dropdown => {
  622.            const menu = dropdown.querySelector('.dropdown-menu');
  623.            let timeout;
  624.  
  625.            dropdown.addEventListener('mouseenter', () => {
  626.                clearTimeout(timeout);
  627.                menu.style.display = 'block';
  628.                setTimeout(() => {
  629.                    menu.classList.add('opacity-100', 'visible');
  630.                    menu.classList.remove('opacity-0', 'invisible');
  631.                }, 10);
  632.            });
  633.  
  634.            dropdown.addEventListener('mouseleave', () => {
  635.                menu.classList.add('opacity-0', 'invisible');
  636.                menu.classList.remove('opacity-100', 'visible');
  637.                timeout = setTimeout(() => {
  638.                    menu.style.display = 'none';
  639.                }, 200);
  640.            });
  641.        });
  642.    }
  643.  
  644.    initializeTools() {
  645.        this.tools = [
  646.            // Image Tools
  647.            { name: 'Image Converter', category: 'image', url: '/image-converter', description: 'Convert between different image formats', keywords: ['image', 'convert', 'format', 'jpg', 'png', 'gif'] },
  648.            { name: 'JPG to PNG', category: 'image', url: '/jpg-to-png', description: 'Convert JPG images to PNG format', keywords: ['jpg', 'jpeg', 'png', 'convert'] },
  649.            { name: 'PNG to JPG', category: 'image', url: '/png-to-jpg', description: 'Convert PNG images to JPG format', keywords: ['png', 'jpg', 'jpeg', 'convert'] },
  650.            { name: 'HEIC to JPG', category: 'image', url: '/heic-to-jpg', description: 'Convert HEIC images to JPG format', keywords: ['heic', 'jpg', 'jpeg', 'convert', 'apple'] },
  651.            // Audio Tools
  652.            { name: 'Audio Converter', category: 'audio', url: '/audio-converter', description: 'Convert between different audio formats', keywords: ['audio', 'convert', 'mp3', 'wav', 'flac'] },
  653.            { name: 'MP3 Converter', category: 'audio', url: '/mp3-converter', description: 'Convert audio files to MP3 format', keywords: ['mp3', 'convert', 'audio'] },
  654.            { name: 'MP4 to MP3', category: 'audio', url: '/mp4-to-mp3', description: 'Convert MP4 files to MP3 format', keywords: ['mp4', 'mp3', 'convert'] },
  655.            { name: 'WAV to MP3', category: 'audio', url: '/wav-to-mp3', description: 'Convert WAV files to MP3 format', keywords: ['wav', 'mp3', 'convert'] },
  656.            // Video Tools
  657.            { name: 'Video Converter', category: 'video', url: '/video-converter', description: 'Convert between different video formats', keywords: ['video', 'convert', 'mp4', 'avi', 'mov'] },
  658.            { name: 'MP4 Converter', category: 'video', url: '/mp4-converter', description: 'Convert videos to MP4 format', keywords: ['mp4', 'convert', 'video'] },
  659.            { name: 'AVI to MP4', category: 'video', url: '/avi-to-mp4', description: 'Convert AVI videos to MP4 format', keywords: ['avi', 'mp4', 'convert'] },
  660.            { name: 'MOV to MP4', category: 'video', url: '/mov-to-mp4', description: 'Convert MOV videos to MP4 format', keywords: ['mov', 'mp4', 'convert'] },
  661.            // Other Tools
  662.            { name: 'Time Converter', category: 'time', url: '/time-converter', description: 'Convert between different time zones', keywords: ['time', 'timezone', 'convert', 'utc'] },
  663.            { name: 'Unit Converter', category: 'unit', url: '/unit-converter', description: 'Convert between different units', keywords: ['unit', 'convert', 'measurement'] }
  664.        ];
  665.    }
  666.  
  667.    bindEvents() {
  668.        // Search Events
  669.        if (this.searchBtn) {
  670.            this.searchBtn.addEventListener('click', () => this.openSearch());
  671.        }
  672.  
  673.        if (this.closeSearch) {
  674.            this.closeSearch.addEventListener('click', () => this.closeSearchOverlay());
  675.        }
  676.  
  677.        if (this.searchOverlay) {
  678.            this.searchOverlay.addEventListener('click', (e) => {
  679.                if (e.target === this.searchOverlay) {
  680.                    this.closeSearchOverlay();
  681.                }
  682.            });
  683.        }
  684.  
  685.        if (this.searchInput) {
  686.            this.searchInput.addEventListener('input', (e) => this.handleSearch(e.target.value));
  687.            this.searchInput.addEventListener('keydown', (e) => this.handleKeydown(e));
  688.        }
  689.  
  690.        // Mobile Menu Events
  691.        if (this.mobileMenuBtn) {
  692.            this.mobileMenuBtn.addEventListener('click', () => this.openMobileMenu());
  693.        }
  694.  
  695.        if (this.closeMobileMenu) {
  696.            this.closeMobileMenu.addEventListener('click', () => this.closeMobileMenuOverlay());
  697.        }
  698.  
  699.        if (this.mobileMenuOverlay) {
  700.            this.mobileMenuOverlay.addEventListener('click', () => this.closeMobileMenuOverlay());
  701.        }
  702.  
  703.        // Popular Search Tags
  704.        document.querySelectorAll('.popular-search-tag').forEach(tag => {
  705.            tag.addEventListener('click', (e) => {
  706.                const searchTerm = e.target.dataset.search;
  707.                this.performSearch(searchTerm);
  708.            });
  709.        });
  710.  
  711.        // Keyboard Events
  712.        document.addEventListener('keydown', (e) => {
  713.            if (e.key === 'Escape') {
  714.                this.closeSearchOverlay();
  715.                this.closeMobileMenuOverlay();
  716.            }
  717.        });
  718.    }
  719.  
  720.    // Search Methods
  721.    openSearch() {
  722.        if (this.searchOverlay) {
  723.            this.searchOverlay.classList.remove('hidden');
  724.            document.body.style.overflow = 'hidden';
  725.            setTimeout(() => {
  726.                if (this.searchInput) {
  727.                    this.searchInput.focus();
  728.                }
  729.            }, 100);
  730.        }
  731.    }
  732.  
  733.    closeSearchOverlay() {
  734.        if (this.searchOverlay) {
  735.            this.searchOverlay.classList.add('hidden');
  736.            document.body.style.overflow = 'auto';
  737.            if (this.searchInput) {
  738.                this.searchInput.value = '';
  739.            }
  740.            this.showDefaultState();
  741.        }
  742.    }
  743.  
  744.    handleSearch(query) {
  745.        if (query.trim() === '') {
  746.            this.showDefaultState();
  747.            return;
  748.        }
  749.  
  750.        const results = this.searchTools(query);
  751.        this.displayResults(results, query);
  752.        this.selectedIndex = -1;
  753.    }
  754.  
  755.    searchTools(query) {
  756.        const searchTerm = query.toLowerCase().trim();
  757.        return this.tools.filter(tool => {
  758.            return tool.name.toLowerCase().includes(searchTerm) ||
  759.                   tool.description.toLowerCase().includes(searchTerm) ||
  760.                   tool.keywords.some(keyword => keyword.includes(searchTerm)) ||
  761.                   tool.category.includes(searchTerm);
  762.        }).sort((a, b) => {
  763.            const aNameMatch = a.name.toLowerCase().includes(searchTerm);
  764.            const bNameMatch = b.name.toLowerCase().includes(searchTerm);
  765.            if (aNameMatch && !bNameMatch) return -1;
  766.            if (!aNameMatch && bNameMatch) return 1;
  767.            return a.name.localeCompare(b.name);
  768.        });
  769.    }
  770.  
  771.    displayResults(results, query) {
  772.        this.currentResults = results;
  773.  
  774.        if (results.length === 0) {
  775.            this.showNoResults();
  776.            return;
  777.        }
  778.  
  779.        if (this.searchResults) {
  780.            this.searchResults.classList.remove('hidden');
  781.        }
  782.        if (this.popularSearches) {
  783.            this.popularSearches.classList.add('hidden');
  784.        }
  785.        if (this.noResults) {
  786.            this.noResults.classList.add('hidden');
  787.        }
  788.  
  789.        if (this.resultsCount) {
  790.            this.resultsCount.textContent = results.length;
  791.        }
  792.  
  793.        if (this.searchResultsList) {
  794.            this.searchResultsList.innerHTML = results.map((tool, index) => `
  795.                <div class="search-result-item" data-index="${index}" data-url="${tool.url}">
  796.                    <div class="search-result-icon category-${tool.category}">
  797.                        ${this.getCategoryIcon(tool.category)}
  798.                    </div>
  799.                    <div class="flex-1">
  800.                        <div class="font-medium text-gray-900">${this.highlightMatch(tool.name, query)}</div>
  801.                        <p class="text-sm text-gray-600 mt-1">${tool.description}</p>
  802.                        <span class="inline-block mt-2 px-2 py-1 bg-gray-100 text-gray-600 text-xs rounded-full capitalize">${this.getCategoryLabel(tool.category)}</span>
  803.                    </div>
  804.                    <svg class="w-5 h-5 text-gray-400" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  805.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 5l7 7-7 7"/>
  806.                    </svg>
  807.                </div>
  808.            `).join('');
  809.  
  810.            // Add click handlers
  811.            this.searchResultsList.querySelectorAll('.search-result-item').forEach(item => {
  812.                item.addEventListener('click', () => {
  813.                    this.selectResult(item.dataset.url, query);
  814.                });
  815.            });
  816.        }
  817.    }
  818.  
  819.    getCategoryIcon(category) {
  820.        const icons = {
  821.            image: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><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"/></svg>',
  822.            audio: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M9 19V6l12-3v13M9 19c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zm12-3c0 1.105-1.343 2-3 2s-3-.895-3-2 1.343-2 3-2 3 .895 3 2zM9 10l12-3"/></svg>',
  823.            video: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M15 10l4.553-2.276A1 1 0 0121 8.618v6.764a1 1 0 01-1.447.894L15 14M5 18h8a2 2 0 002-2V8a2 2 0 00-2-2H5a2 2 0 00-2 2v8a2 2 0 002 2z"/></svg>',
  824.            time: '<svg class="w-5 h-5 text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"/></svg>'
  825.        };
  826.        return icons[category] || icons.image;
  827.    }
  828.  
  829.    getCategoryLabel(category) {
  830.        const labels = {
  831.            image: 'Image Tool',
  832.            audio: 'Audio Tool',
  833.            video: 'Video Tool',
  834.            time: 'Time Tool'
  835.        };
  836.        return labels[category] || 'Tool';
  837.    }
  838.  
  839.    highlightMatch(text, query) {
  840.        if (!query) return text;
  841.        const regex = new RegExp(`(${query})`, 'gi');
  842.        return text.replace(regex, '<span class="bg-yellow-200 font-semibold">$1</span>');
  843.    }
  844.  
  845.    handleKeydown(e) {
  846.        if (this.currentResults.length === 0) return;
  847.  
  848.        switch (e.key) {
  849.            case 'ArrowDown':
  850.                e.preventDefault();
  851.                this.selectedIndex = Math.min(this.selectedIndex + 1, this.currentResults.length - 1);
  852.                this.updateSelection();
  853.                break;
  854.            case 'ArrowUp':
  855.                e.preventDefault();
  856.                this.selectedIndex = Math.max(this.selectedIndex - 1, -1);
  857.                this.updateSelection();
  858.                break;
  859.            case 'Enter':
  860.                e.preventDefault();
  861.                if (this.selectedIndex >= 0) {
  862.                    this.selectResult(this.currentResults[this.selectedIndex].url, this.searchInput.value);
  863.                }
  864.                break;
  865.        }
  866.    }
  867.  
  868.    updateSelection() {
  869.        if (this.searchResultsList) {
  870.            this.searchResultsList.querySelectorAll('.search-result-item').forEach((item, index) => {
  871.                if (index === this.selectedIndex) {
  872.                    item.classList.add('selected');
  873.                    item.scrollIntoView({block: 'nearest'});
  874.                } else {
  875.                    item.classList.remove('selected');
  876.                }
  877.            });
  878.        }
  879.    }
  880.  
  881.    selectResult(url, query) {
  882.        window.location.href = url;
  883.        this.closeSearchOverlay();
  884.    }
  885.  
  886.    performSearch(searchTerm) {
  887.        if (this.searchInput) {
  888.            this.searchInput.value = searchTerm;
  889.            this.handleSearch(searchTerm);
  890.            this.searchInput.focus();
  891.        }
  892.    }
  893.  
  894.    showDefaultState() {
  895.        if (this.searchResults) {
  896.            this.searchResults.classList.add('hidden');
  897.        }
  898.        if (this.noResults) {
  899.            this.noResults.classList.add('hidden');
  900.        }
  901.        if (this.popularSearches) {
  902.            this.popularSearches.classList.remove('hidden');
  903.        }
  904.    }
  905.  
  906.    showNoResults() {
  907.        if (this.searchResults) {
  908.            this.searchResults.classList.add('hidden');
  909.        }
  910.        if (this.popularSearches) {
  911.            this.popularSearches.classList.add('hidden');
  912.        }
  913.        if (this.noResults) {
  914.            this.noResults.classList.remove('hidden');
  915.        }
  916.    }
  917.  
  918.    // Mobile Menu Methods
  919.    openMobileMenu() {
  920.        if (this.mobileMenu && this.mobileMenuOverlay) {
  921.            this.mobileMenu.classList.add('open');
  922.            this.mobileMenuOverlay.classList.remove('hidden');
  923.            document.body.style.overflow = 'hidden';
  924.        }
  925.    }
  926.  
  927.    closeMobileMenuOverlay() {
  928.        if (this.mobileMenu && this.mobileMenuOverlay) {
  929.            this.mobileMenu.classList.remove('open');
  930.            this.mobileMenuOverlay.classList.add('hidden');
  931.            document.body.style.overflow = 'auto';
  932.        }
  933.    }
  934. }
  935.  
  936. // Initialize when DOM is loaded
  937. document.addEventListener('DOMContentLoaded', function() {
  938.    new HeaderManager();
  939. });
  940. </script>
  941.  
  942.  
  943.  
  944. <div class="min-h-screen bg-white">
  945.    <div class="container mx-auto px-4 flex items-center justify-center min-h-screen">
  946.        <div class="max-w-2xl mx-auto text-center">
  947.  
  948.            <!-- Google Logo Style Element (Optional) -->
  949.            <div class="mb-12">
  950.                <div class="inline-flex items-center space-x-1 text-6xl font-normal tracking-tight">
  951.                    <span class="text-blue-500">4</span>
  952.                    <span class="text-red-500">0</span>
  953.                    <span class="text-yellow-500">4</span>
  954.                </div>
  955.            </div>
  956.  
  957.            <!-- Main Content -->
  958.            <div class="mb-12">
  959.                <h1 class="text-2xl text-gray-800 font-normal mb-4">
  960.                    Page not found
  961.                </h1>
  962.  
  963.                <p class="text-base text-gray-600 mb-8 max-w-md mx-auto leading-6">
  964.                    The page you are looking for might have been removed, had its name changed, or is temporarily unavailable.
  965.                </p>
  966.            </div>
  967.  
  968.            <!-- Action Buttons -->
  969.            <div class="flex flex-col sm:flex-row gap-3 justify-center items-center mb-12">
  970.                <!-- Return Home Button -->
  971.                <a href="/"
  972.                   class="inline-flex items-center px-6 py-2 bg-blue-600 text-white text-sm font-medium rounded hover:bg-blue-700 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
  973.                    <svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  974.                        <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"></path>
  975.                    </svg>
  976.                    Go to homepage
  977.                </a>
  978.  
  979.                <!-- Go Back Button -->
  980.                <button onclick="history.back()"
  981.                        class="inline-flex items-center px-6 py-2 border border-gray-300 text-sm font-medium text-gray-700 bg-white rounded hover:bg-gray-50 transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
  982.                    <svg class="w-4 h-4 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  983.                        <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M11 17l-5-5m0 0l5-5m-5 5h12"></path>
  984.                    </svg>
  985.                    Go back
  986.                </button>
  987.            </div>
  988.  
  989.            <!-- Quick Links Section -->
  990.            <div class="border-t border-gray-200 pt-8">
  991.                <p class="text-sm text-gray-500 mb-6">You might want to try:</p>
  992.  
  993.                <div class="grid grid-cols-2 md:grid-cols-4 gap-4 max-w-md mx-auto">
  994.                    <a href="/" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  995.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  996.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  997.                                <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"></path>
  998.                            </svg>
  999.                        </div>
  1000.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">Home</p>
  1001.                    </a>
  1002.  
  1003.                    <a href="/about" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1004.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1005.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1006.                                <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>
  1007.                            </svg>
  1008.                        </div>
  1009.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">About</p>
  1010.                    </a>
  1011.  
  1012.                    <a href="/contact" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1013.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1014.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1015.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M8 12h.01M12 12h.01M16 12h.01M21 12c0 4.418-4.03 8-9 8a9.863 9.863 0 01-4.255-.949L3 20l1.395-3.72C3.512 15.042 3 13.574 3 12c0-4.418 4.03-8 9-8s9 3.582 9 8z"></path>
  1016.                            </svg>
  1017.                        </div>
  1018.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">Contact</p>
  1019.                    </a>
  1020.  
  1021.                    <a href="/all-tools" class="group text-center p-4 rounded-lg hover:bg-gray-50 transition-colors duration-200">
  1022.                        <div class="w-8 h-8 bg-gray-100 rounded-full flex items-center justify-center mx-auto mb-2 group-hover:bg-blue-100 transition-colors duration-200">
  1023.                            <svg class="w-4 h-4 text-gray-600 group-hover:text-blue-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1024.                                <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M19.428 15.428a2 2 0 00-1.022-.547l-2.387-.477a6 6 0 00-3.86.517l-.318.158a6 6 0 01-3.86.517L6.05 15.21a2 2 0 00-1.806.547M8 4h8l-1 1v5.172a2 2 0 00.586 1.414l5 5c1.26 1.26.367 3.414-1.415 3.414H4.828c-1.782 0-2.674-2.154-1.414-3.414l5-5A2 2 0 009 10.172V5L8 4z"></path>
  1025.                            </svg>
  1026.                        </div>
  1027.                        <p class="text-xs text-gray-700 group-hover:text-blue-600">Tools</p>
  1028.                    </a>
  1029.                </div>
  1030.            </div>
  1031.  
  1032.            <!-- Footer Message -->
  1033.            <div class="mt-8">
  1034.                <p class="text-xs text-gray-400">
  1035.                    Error 404
  1036.                </p>
  1037.            </div>
  1038.        </div>
  1039.    </div>
  1040. </div>
  1041.  
  1042.  
  1043.  
  1044.  
  1045. <!-- templates/blog/related_posts_for_apps.html -->
  1046.  
  1047.  
  1048.  
  1049.  
  1050. <!-- Footer -->
  1051.    <footer class="bg-gray-800 text-white py-16">
  1052.        <div class="container mx-auto px-6">
  1053.            <div class="grid grid-cols-1 md:grid-cols-4 gap-8">
  1054.                <div>
  1055.                    <div class="text-lg font-semibold mb-4 text-blue-400">PDF & Document Tools</div>
  1056.                    <ul class="space-y-2">
  1057.                        <li><a href="/pdf-to-word" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">PDF to Word Converter</a></li>
  1058.                        <li><a href="/word-to-pdf" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Word to PDF Converter</a></li>
  1059.                        <li><a href="/pdf-compressor" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">PDF Compressor</a></li>
  1060.                        <li><a href="/document-converter" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Document Converter</a></li>
  1061.                        <li><a href="/pdf-converter" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">PDF Converter</a></li>
  1062.                    </ul>
  1063.                </div>
  1064.  
  1065.                <div>
  1066.                    <div class="text-lg font-semibold mb-4 text-green-400">Image & Audio Tools</div>
  1067.                    <ul class="space-y-2">
  1068.                        <li><a href="/image-compressor" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Image Compressor</a></li>
  1069.                        <li><a href="/jpg-to-png" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">JPG to PNG Converter</a></li>
  1070.                        <li><a href="/mp4-to-mp3" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">MP4 to MP3 Converter</a></li>
  1071.                        <li><a href="/mp3-converter" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">MP3 Converter</a></li>
  1072.                        <li><a href="/webp-converter" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">WebP Converter</a></li>
  1073.                    </ul>
  1074.                </div>
  1075.  
  1076.                <div>
  1077.                    <div class="text-lg font-semibold mb-4 text-yellow-400">Time Zone Converters</div>
  1078.                    <ul class="space-y-2">
  1079.                        <li><a href="/convert-utc-to-ist-time" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">UTC to IST Time Converter</a></li>
  1080.                        <li><a href="/convert-cst-to-est-time" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">CST to EST Time Converter</a></li>
  1081.                        <li><a href="/convert-bst-to-est-time" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">BST to EST Time Converter</a></li>
  1082.                        <li><a href="/convert-mst-to-est-time" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">MST to EST Time Converter</a></li>
  1083.                        <li><a href="/time-converter" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">World Clock</a></li>
  1084.                    </ul>
  1085.                </div>
  1086.  
  1087.                <div>
  1088.                    <div class="text-lg font-semibold mb-4 text-purple-400">Company</div>
  1089.                    <ul class="space-y-2">
  1090.                        <li><a href="/about-us" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">About Us</a></li>
  1091.                        <li><a href="/privacy-policy" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Privacy Policy</a></li>
  1092.                        <li><a href="/terms-and-conditions" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Terms of Service</a></li>
  1093.                        <li><a href="/contact" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Contact Support</a></li>
  1094.                        <li><a href="/blog" class="text-gray-300 hover:text-white transition-colors" style="text-decoration: none;">Blog</a></li>
  1095.                    </ul>
  1096.                </div>
  1097.            </div>
  1098.  
  1099. <!-- RECOMMENDED: Main Revamped Version (Clean & Professional) -->
  1100. <div class="mt-12 pt-8 border-t border-gray-700">
  1101.    <!-- Brand Section -->
  1102.    <div class="text-center mb-6">
  1103.        <div class="flex flex-col sm:flex-row justify-center items-center space-y-2 sm:space-y-0 sm:space-x-3 mb-3">
  1104.            <span class="text-2xl font-light text-blue-400">iFormat.io</span>
  1105.            <span class="hidden sm:inline text-gray-500">•</span>
  1106.            <span class="text-gray-400 text-lg">Free Online File Converter</span>
  1107.        </div>
  1108.        <p class="text-gray-500 text-sm max-w-md mx-auto leading-relaxed">
  1109.            Convert files online for free with enterprise-grade security and professional quality results.
  1110.        </p>
  1111.    </div>
  1112.  
  1113.    <!-- Action Links & Credits -->
  1114.    <div class="flex flex-col md:flex-row justify-center items-center space-y-3 md:space-y-0 md:space-x-8 mb-6">
  1115.        <!-- Support Link -->
  1116.        <a href="/donate"
  1117.           class="inline-flex items-center space-x-2 bg-gradient-to-r from-yellow-600 to-yellow-500 hover:from-yellow-700 hover:to-yellow-600 text-white px-4 py-2 rounded-lg transition-all duration-200 transform hover:scale-105 text-sm font-medium">
  1118.            <span>❤️</span>
  1119.            <span>Support Our Mission</span>
  1120.        </a>
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.  
  1127.  
  1128.  
  1129.  
  1130.  
  1131.        <!-- SEO Credit -->
  1132.        <div class="flex items-center space-x-2 text-sm">
  1133.            <span class="text-gray-500">Powered by:</span>
  1134.            <a href="https://daikimedia.com"
  1135.               target="_blank"
  1136.               rel="noopener noreferrer"
  1137.               class="inline-flex items-center space-x-1 text-blue-400 hover:text-blue-300 transition-colors duration-200 font-medium">
  1138.                <span>Daiki Media</span>
  1139.                <svg class="w-3 h-3" fill="none" stroke="currentColor" viewBox="0 0 24 24">
  1140.                    <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 6H6a2 2 0 00-2 2v10a2 2 0 002 2h10a2 2 0 002-2v-4M14 4h6m0 0v6m0-6L10 14"/>
  1141.                </svg>
  1142.            </a>
  1143.        </div>
  1144.    </div>
  1145.  
  1146.    <!-- Copyright -->
  1147.    <div class="text-center pt-4 border-t border-gray-800">
  1148.        <p class="text-gray-500 text-sm">
  1149.            © 2025 iFormat.io. All rights reserved.
  1150.        </p>
  1151.    </div>
  1152. </div>
  1153.        </div>
  1154.    </footer>
  1155. </body>
  1156. </html>
Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda