{"id":1101,"date":"2025-10-20T08:26:36","date_gmt":"2025-10-20T08:26:36","guid":{"rendered":"https:\/\/viewri.com\/?page_id=1101"},"modified":"2025-12-29T09:04:27","modified_gmt":"2025-12-29T09:04:27","slug":"cover-photo","status":"publish","type":"page","link":"https:\/\/viewri.com\/facebook\/cover-photo\/","title":{"rendered":"Facebook cover photo viewer"},"content":{"rendered":"<p>[et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_fullwidth_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\r\n    <style>\r\n        .fbpv * {\r\n            margin: 0;\r\n            padding: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .fbpv {\r\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\r\n            background: #f0f2f5;\r\n            color: #1c1e21;\r\n            min-height: 80vh;\r\n            overflow-x: hidden;\r\n            position: relative;\r\n        }\r\n\r\n        \/* Premium Background *\/\r\n        .fbpv::before {\r\n            content: '';\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background:\r\n                radial-gradient(circle at 20% 80%, rgba(24, 119, 242, 0.1) 0%, transparent 50%),\r\n                radial-gradient(circle at 80% 20%, rgba(66, 103, 178, 0.1) 0%, transparent 50%),\r\n                radial-gradient(circle at 40% 40%, rgba(24, 119, 242, 0.05) 0%, transparent 50%);\r\n            pointer-events: none;\r\n            z-index: 0;\r\n        }\r\n\r\n        .fbpv-container {\r\n            max-width: 1400px;\r\n            margin: 0 auto;\r\n            padding: 0 2rem;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        \/* Premium Header *\/\r\n        .fbpv-header {\r\n            text-align: center;\r\n            padding: 6rem 0 4rem 0;\r\n            position: relative;\r\n        }\r\n\r\n        .fbpv-header::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 50%;\r\n            transform: translate(-50%, -50%);\r\n            width: 500px;\r\n            height: 500px;\r\n            background: radial-gradient(circle, rgba(24, 119, 242, 0.08) 0%, transparent 70%);\r\n            border-radius: 50%;\r\n            z-index: -1;\r\n        }\r\n\r\n        .fbpv-title {\r\n            font-size: clamp(3rem, 6vw, 5rem);\r\n            font-weight: 900;\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 50%, #1877f2 100%);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n            background-clip: text;\r\n            margin-bottom: 1.5rem;\r\n            letter-spacing: -0.03em;\r\n            line-height: 1.1;\r\n            filter: drop-shadow(0 8px 25px rgba(24, 119, 242, 0.3));\r\n        }\r\n\r\n        .fbpv-subtitle {\r\n            font-size: 1.3rem;\r\n            color: #65676b;\r\n            font-weight: 400;\r\n            max-width: 71%;\r\n            margin: 0 auto;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        \/* Main Content Card *\/\r\n        .fbpv-main-card {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.1);\r\n            border-radius: 2.5rem;\r\n            padding: 4rem;\r\n            margin-bottom: 3rem;\r\n            backdrop-filter: blur(30px);\r\n            box-shadow: 0 30px 60px rgba(24, 119, 242, 0.1), 0 0 0 1px rgba(255, 255, 255, 0.05);\r\n        }\r\n\r\n        \/* Search Section *\/\r\n        .fbpv-search-section {\r\n            margin-bottom: 4rem;\r\n        }\r\n\r\n        .fbpv-search-form {\r\n            display: flex;\r\n            gap: 1.5rem;\r\n            max-width: 900px;\r\n            margin: 0 auto;\r\n        }\r\n\r\n        .fbpv-url-input {\r\n            flex: 1;\r\n            padding: 1.8rem 2.5rem;\r\n            border: 2px solid rgba(24, 119, 242, 0.2);\r\n            border-radius: 1.5rem;\r\n            font-size: 1.2rem;\r\n            background: rgba(255, 255, 255, 0.8);\r\n            color: #1c1e21;\r\n            font-weight: 500;\r\n            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n            backdrop-filter: blur(10px);\r\n        }\r\n\r\n        .fbpv-url-input::placeholder {\r\n            color: #65676b;\r\n        }\r\n\r\n        .fbpv-url-input:focus {\r\n            outline: none;\r\n            border-color: #1877f2;\r\n            background: rgba(255, 255, 255, 0.95);\r\n            box-shadow: 0 0 0 4px rgba(24, 119, 242, 0.15), 0 10px 30px rgba(24, 119, 242, 0.1);\r\n            transform: translateY(-3px);\r\n        }\r\n\r\n        .fbpv-analyze-btn {\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            color: white;\r\n            border: none;\r\n            padding: 1.8rem 3.5rem;\r\n            border-radius: 1.5rem;\r\n            font-size: 1.2rem;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n            box-shadow: 0 15px 35px rgba(24, 119, 242, 0.3);\r\n            position: relative;\r\n            overflow: hidden;\r\n            backdrop-filter: blur(10px);\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 0.75rem;\r\n        }\r\n\r\n        .fbpv-analyze-btn::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 0;\r\n            left: -100%;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);\r\n            transition: left 0.6s;\r\n        }\r\n\r\n        .fbpv-analyze-btn:hover::before {\r\n            left: 100%;\r\n        }\r\n\r\n        .fbpv-analyze-btn:hover {\r\n            transform: translateY(-5px);\r\n            box-shadow: 0 25px 50px rgba(24, 119, 242, 0.4);\r\n        }\r\n\r\n        .fbpv-analyze-btn:active {\r\n            transform: translateY(-2px);\r\n        }\r\n\r\n        .fbpv-analyze-btn.loading {\r\n            pointer-events: none;\r\n            opacity: 0.8;\r\n        }\r\n\r\n        .fbpv-analyze-btn .btn-spinner {\r\n            display: none;\r\n            animation: spin 1s linear infinite;\r\n        }\r\n\r\n        .fbpv-analyze-btn.loading .btn-spinner {\r\n            display: inline-block;\r\n        }\r\n\r\n        .fbpv-analyze-btn.loading .btn-text {\r\n            display: none;\r\n        }\r\n\r\n        \/* Loading Section *\/\r\n        .fbpv-loading-section {\r\n            text-align: center;\r\n            padding: 6rem 0;\r\n        }\r\n\r\n        .fbpv-spinner {\r\n            width: 80px;\r\n            height: 80px;\r\n            border: 4px solid rgba(24, 119, 242, 0.1);\r\n            border-top: 4px solid #1877f2;\r\n            border-radius: 50%;\r\n            animation: spin 1s linear infinite;\r\n            margin: 0 auto 2rem;\r\n        }\r\n\r\n        @keyframes spin {\r\n            to {\r\n                transform: rotate(360deg);\r\n            }\r\n        }\r\n\r\n        .fbpv-loading-text {\r\n            font-size: 1.3rem;\r\n            color: #1877f2;\r\n            font-weight: 600;\r\n        }\r\n\r\n        \/* Section Headers *\/\r\n        .fbpv-section-header {\r\n            text-align: center;\r\n            margin: 4rem 0 3rem 0;\r\n            padding: 2rem 0;\r\n            background: rgba(255, 255, 255, 0.6);\r\n            border-radius: 1.5rem;\r\n            backdrop-filter: blur(20px);\r\n            border: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-section-title {\r\n            font-size: 2rem;\r\n            font-weight: 700;\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n            background-clip: text;\r\n            margin-bottom: 0.5rem;\r\n        }\r\n\r\n        .fbpv-section-subtitle {\r\n            color: #65676b;\r\n            font-size: 1.1rem;\r\n            font-weight: 400;\r\n        }\r\n\r\n        \/* Cover Photo Container *\/\r\n        .fbpv-cover-photo-container {\r\n            display: flex;\r\n            justify-content: center;\r\n            margin-bottom: 4rem;\r\n        }\r\n\r\n        .fbpv-cover-photo-card {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.15);\r\n            border-radius: 2rem;\r\n            overflow: hidden;\r\n            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);\r\n            cursor: pointer;\r\n            position: relative;\r\n            backdrop-filter: blur(20px);\r\n            box-shadow: 0 15px 40px rgba(24, 119, 242, 0.15);\r\n            max-width: 900px;\r\n            width: 100%;\r\n        }\r\n\r\n        .fbpv-cover-photo-card:hover {\r\n            transform: translateY(-10px) scale(1.02);\r\n            border-color: rgba(24, 119, 242, 0.3);\r\n            box-shadow: 0 25px 60px rgba(24, 119, 242, 0.25);\r\n        }\r\n\r\n        .fbpv-cover-photo-image {\r\n            width: 100%;\r\n            height: 450px;\r\n            object-fit: cover;\r\n            transition: transform 0.5s ease;\r\n        }\r\n\r\n        .fbpv-cover-photo-card:hover .fbpv-cover-photo-image {\r\n            transform: scale(1.05);\r\n        }\r\n\r\n        .fbpv-cover-photo-info {\r\n            padding: 1.5rem 2rem;\r\n            text-align: center;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            border-top: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-cover-photo-actions {\r\n            display: flex;\r\n            gap: 1rem;\r\n            justify-content: center;\r\n            flex-wrap: wrap;\r\n            align-items: center;\r\n        }\r\n\r\n        \/* Photos Grid *\/\r\n        .fbpv-photos-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));\r\n            gap: 3rem;\r\n            margin-top: 4rem;\r\n        }\r\n\r\n        .fbpv-photo-card {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.15);\r\n            border-radius: 2rem;\r\n            overflow: hidden;\r\n            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);\r\n            cursor: pointer;\r\n            position: relative;\r\n            backdrop-filter: blur(20px);\r\n            box-shadow: 0 15px 40px rgba(24, 119, 242, 0.15);\r\n        }\r\n\r\n        .fbpv-photo-card:hover {\r\n            transform: translateY(-10px) scale(1.02);\r\n            border-color: rgba(24, 119, 242, 0.3);\r\n            box-shadow: 0 25px 60px rgba(24, 119, 242, 0.25);\r\n        }\r\n\r\n        .fbpv-photo-image {\r\n            width: 100%;\r\n            height: 300px;\r\n            object-fit: cover;\r\n            transition: transform 0.5s ease;\r\n        }\r\n\r\n        .fbpv-photo-card:hover .fbpv-photo-image {\r\n            transform: scale(1.05);\r\n        }\r\n\r\n        .fbpv-photo-info {\r\n            padding: 1rem 1.5rem;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            border-top: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-photo-dimensions {\r\n            color: #65676b;\r\n            font-size: 0.9rem;\r\n            font-weight: 500;\r\n        }\r\n\r\n        .fbpv-photo-actions {\r\n            display: flex;\r\n            gap: 0.5rem;\r\n            justify-content: center;\r\n            padding: 1rem 1.5rem;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            border-top: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-photo-action-btn {\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            border: none;\r\n            border-radius: 1rem;\r\n            padding: 0.8rem 1.2rem;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 0.5rem;\r\n            font-size: 0.9rem;\r\n            font-weight: 600;\r\n            color: white;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            backdrop-filter: blur(10px);\r\n            box-shadow: 0 5px 15px rgba(24, 119, 242, 0.3);\r\n            flex: 1;\r\n            min-width: 0;\r\n        }\r\n\r\n        .fbpv-photo-action-btn:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 10px 25px rgba(24, 119, 242, 0.4);\r\n        }\r\n\r\n        .fbpv-photo-action-btn i {\r\n            font-size: 1rem;\r\n        }\r\n\r\n        \/* Modal *\/\r\n        .fbpv-photo-modal {\r\n            position: fixed;\r\n            inset: 0;\r\n            background: rgba(0, 0, 0, 0.95);\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            z-index: 1000;\r\n            opacity: 0;\r\n            pointer-events: none;\r\n            transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n            backdrop-filter: blur(20px);\r\n        }\r\n\r\n        .fbpv-photo-modal.active {\r\n            opacity: 1;\r\n            pointer-events: all;\r\n        }\r\n\r\n        .fbpv-photo-modal-content {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.1);\r\n            border-radius: 2.5rem;\r\n            max-width: 90vw;\r\n            max-height: 90vh;\r\n            overflow: hidden;\r\n            position: relative;\r\n            backdrop-filter: blur(30px);\r\n            box-shadow: 0 40px 80px rgba(24, 119, 242, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.05);\r\n            transform: scale(0.9) translateY(20px);\r\n            transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n        }\r\n\r\n        .fbpv-photo-modal.active .fbpv-photo-modal-content {\r\n            transform: scale(1) translateY(0);\r\n        }\r\n\r\n        .fbpv-photo-modal-image {\r\n            max-width: 100%;\r\n            max-height: 70vh;\r\n            object-fit: contain;\r\n            display: block;\r\n        }\r\n\r\n        .fbpv-photo-modal-close {\r\n            position: absolute;\r\n            top: 2rem;\r\n            right: 2rem;\r\n            background: rgba(0, 0, 0, 0.8);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 50%;\r\n            width: 64px;\r\n            height: 64px;\r\n            font-size: 1.5rem;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            backdrop-filter: blur(10px);\r\n            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\r\n            z-index: 2;\r\n            pointer-events: auto;\r\n        }\r\n\r\n        .fbpv-photo-modal-close:hover {\r\n            background: rgba(0, 0, 0, 0.9);\r\n            transform: scale(1.1);\r\n            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.4);\r\n        }\r\n\r\n        .fbpv-photo-modal-actions {\r\n            padding: 3rem;\r\n            display: flex;\r\n            gap: 2rem;\r\n            justify-content: center;\r\n        }\r\n\r\n        .fbpv-photo-modal-action-btn {\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 1.5rem;\r\n            padding: 1.2rem 2.5rem;\r\n            font-size: 1.2rem;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 1rem;\r\n            box-shadow: 0 10px 25px rgba(24, 119, 242, 0.3);\r\n        }\r\n\r\n        .fbpv-photo-modal-action-btn:hover {\r\n            transform: translateY(-3px);\r\n            box-shadow: 0 20px 40px rgba(24, 119, 242, 0.4);\r\n        }\r\n\r\n        \/* Error Message *\/\r\n        .fbpv-error-message {\r\n            background: linear-gradient(135deg, #ff6b6b 0%, #ee5a52 100%);\r\n            color: white;\r\n            padding: 1.5rem 2rem;\r\n            border-radius: 1rem;\r\n            margin-top: 1.5rem;\r\n            font-weight: 500;\r\n            text-align: center;\r\n            display: none;\r\n        }\r\n\r\n        \/* No Data Message *\/\r\n        .fbpv-no-data-message {\r\n            text-align: center;\r\n            color: #1877f2;\r\n            padding: 6rem 0;\r\n            font-size: 1.3rem;\r\n            font-weight: 500;\r\n        }\r\n\r\n\r\n        \/* Responsive Design *\/\r\n\r\n        @media (max-width: 768px) {\r\n            .fbpv-container {\r\n                padding: 0 1rem;\r\n            }\r\n\r\n            .fbpv-main-card {\r\n                padding: 2rem 1.5rem;\r\n            }\r\n\r\n            .fbpv-search-form {\r\n                flex-direction: column;\r\n            }\r\n\r\n            .fbpv-section-header {\r\n                margin: 3rem 0 2rem 0;\r\n                padding: 1.5rem 0;\r\n            }\r\n\r\n            .fbpv-section-title {\r\n                font-size: 1.5rem;\r\n            }\r\n\r\n            .fbpv-section-subtitle {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-card {\r\n                max-width: 100%;\r\n            }\r\n\r\n            .fbpv-cover-photo-image {\r\n                height: 300px;\r\n            }\r\n\r\n            .fbpv-cover-photo-info {\r\n                padding: 1.5rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions {\r\n                flex-direction: row;\r\n                gap: 0.8rem;\r\n                justify-content: space-between;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions .fbpv-photo-action-btn {\r\n                flex: 1;\r\n                min-width: 0;\r\n                font-size: 0.85rem;\r\n                padding: 0.7rem 1rem;\r\n            }\r\n\r\n            .fbpv-photos-grid {\r\n                grid-template-columns: 1fr;\r\n                gap: 2rem;\r\n            }\r\n\r\n            .fbpv-photo-actions {\r\n                flex-direction: column;\r\n                gap: 0.8rem;\r\n            }\r\n\r\n            .fbpv-header {\r\n                padding: 3rem 0 2rem 0;\r\n            }\r\n\t\t\t\t\t.fbpv-header {\r\n\ttext-align: center;\r\n\tpadding: 6rem 0 4rem 0;\r\n\tposition: relative;\r\n\tmargin-top: 80px;\r\n}\r\n\r\n        }\r\n\r\n        @media (max-width: 480px) {\r\n            .fbpv-section-title {\r\n                font-size: 1.3rem;\r\n            }\r\n\r\n            .fbpv-section-subtitle {\r\n                font-size: 0.9rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-image {\r\n                height: 250px;\r\n            }\r\n\r\n            .fbpv-cover-photo-info {\r\n                padding: 1rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions {\r\n                flex-direction: column;\r\n                gap: 0.6rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions .fbpv-photo-action-btn {\r\n                width: 100%;\r\n                font-size: 0.8rem;\r\n                padding: 0.6rem 1rem;\r\n            }\r\n\r\n            .fbpv-photo-info {\r\n                padding: 0.8rem 1rem;\r\n            }\r\n\r\n            .fbpv-photo-actions {\r\n                padding: 0.8rem 1rem;\r\n            }\r\n\r\n            .fbpv-photo-action-btn {\r\n                padding: 0.6rem 1rem;\r\n                font-size: 0.8rem;\r\n            }\r\n\r\n            .fbpv-title {\r\n                font-size: clamp(2rem, 5vw, 3rem);\r\n            }\r\n\r\n            .fbpv-subtitle {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .fbpv-main-card {\r\n                padding: 1.5rem 1rem;\r\n            }\r\n\r\n            .fbpv-url-input {\r\n                padding: 1.5rem 1.5rem;\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .fbpv-analyze-btn {\r\n                padding: 1.5rem 2rem;\r\n                font-size: 1rem;\r\n            }\r\n\t\t\t\t\t.fbpv-header {\r\n\ttext-align: center;\r\n\tpadding: 6rem 0 4rem 0;\r\n\tposition: relative;\r\n\tmargin-top: 80px;\r\n}\r\n        }\r\n\r\n        @media (max-width: 360px) {\r\n            .fbpv-container {\r\n                padding: 0 0.5rem;\r\n            }\r\n\r\n            .fbpv-main-card {\r\n                padding: 1rem 0.8rem;\r\n            }\r\n\r\n            .fbpv-section-header {\r\n                margin: 2rem 0 1.5rem 0;\r\n                padding: 1rem 0;\r\n            }\r\n\r\n            .fbpv-section-title {\r\n                font-size: 1.1rem;\r\n            }\r\n\r\n            .fbpv-section-subtitle {\r\n                font-size: 0.8rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-info {\r\n                padding: 0.8rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions .fbpv-photo-action-btn {\r\n                font-size: 0.75rem;\r\n                padding: 0.5rem 0.8rem;\r\n            }\r\n\r\n            .fbpv-photo-action-btn {\r\n                padding: 0.5rem 0.8rem;\r\n                font-size: 0.75rem;\r\n            }\r\n\t\t\t\t\t.fbpv-header {\r\n\ttext-align: center;\r\n\tpadding: 6rem 0 4rem 0;\r\n\tposition: relative;\r\n\tmargin-top: 80px;\r\n}\r\n\r\n        }\r\n\r\n        \/* Premium Animations *\/\r\n        @keyframes fadeInUp {\r\n            from {\r\n                opacity: 0;\r\n                transform: translateY(30px);\r\n            }\r\n\r\n            to {\r\n                opacity: 1;\r\n                transform: translateY(0);\r\n            }\r\n        }\r\n\r\n    <\/style>\r\n\r\n    <div class=\"fbpv\">\r\n        <div class=\"fbpv-container\">\r\n            <header class=\"fbpv-header\">\r\n                <h1 class=\"fbpv-title\"><i class=\"fab fa-facebook\"><\/i> Facebook Cover Photo Viewer<\/h1>\r\n                <p class=\"fbpv-subtitle\"><i class=\"fas fa-images\"><\/i> Experience the ultimate way to view and download cover photos and other images from any Facebook\r\n                    profile with our premium interface.<\/p>\r\n        <\/header>\r\n\r\n            <div class=\"fbpv-main-card\">\r\n                <section class=\"fbpv-search-section\">\r\n                    <form class=\"fbpv-search-form\" onsubmit=\"analyzeUrl(event)\">\r\n                        <input type=\"url\" id=\"urlInput\" class=\"fbpv-url-input\" placeholder=\"Enter Facebook profile URL...\" required=\"\">\r\n                    <button type=\"submit\" class=\"fbpv-analyze-btn\" id=\"analyzeBtn\">\r\n                        <i class=\"fas fa-spinner btn-spinner\"><\/i>\r\n                        <span class=\"btn-text\">\r\n                            <i class=\"fas fa-search\"><\/i> Get Photos\r\n                        <\/span>\r\n                    <\/button>\r\n                <\/form>\r\n                <div id=\"errorMessage\" class=\"fbpv-error-message\"><\/div>\r\n            <\/section>\r\n\r\n\r\n            <div id=\"loadingSection\" class=\"fbpv-loading-section\" style=\"display:none;\">\r\n                <div class=\"fbpv-spinner\"><\/div>\r\n                <div class=\"fbpv-loading-text\"><i class=\"fas fa-spinner fa-spin\"><\/i> Analyzing and fetching photos...<\/div>\r\n            <\/div>\r\n\r\n            <main id=\"photosContent\"><\/main>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Photo Modal -->\r\n    <div id=\"photo-modal\" class=\"fbpv-photo-modal\">\r\n        <div class=\"fbpv-photo-modal-content\">\r\n            <button class=\"fbpv-photo-modal-close\" onclick=\"closePhotoModal()\">\r\n                <i class=\"fas fa-times\"><\/i>\r\n            <\/button>\r\n            <img decoding=\"async\" id=\"photo-modal-image\" class=\"fbpv-photo-modal-image\" src=\"\" alt=\"Photo\">\r\n            <div class=\"fbpv-photo-modal-actions\">\r\n                <button class=\"fbpv-photo-modal-action-btn\" onclick=\"downloadCurrentPhoto()\">\r\n                    <i class=\"fas fa-download\"><\/i> Download\r\n                <\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n\t\t\t\t<script src=\"https:\/\/tools.xrespond.com\/api\/rate-limit-handler.js\"><\/script>\r\n\t\t\t\t<script src=\"https:\/\/tools.xrespond.com\/api\/js\/client-ip-detector.js\"><\/script>\r\n\r\n    <script>\r\n        let currentPhotos = [];\r\n        let currentPhotoIndex = null;\r\n        let currentPhotoUrl = '';\r\n\r\n        \/** First successful Analyze per 24h opens affiliate in a new tab; resets every 24 hours per browser. *\/\r\n        const AFFILIATE_REDIRECT_URL = 'https:\/\/amzn.to\/47qqcMV';\r\n        const AFFILIATE_REDIRECT_STORAGE_KEY = 'fbViewerAffiliateRedirectAt';\r\n        const AFFILIATE_REDIRECT_MS = 24 * 60 * 60 * 1000;\r\n\r\n        function shouldAffiliateRedirect() {\r\n            try {\r\n                const raw = localStorage.getItem(AFFILIATE_REDIRECT_STORAGE_KEY);\r\n                if (!raw) return true;\r\n                const last = parseInt(raw, 10);\r\n                if (Number.isNaN(last)) return true;\r\n                return (Date.now() - last) >= AFFILIATE_REDIRECT_MS;\r\n            } catch (e) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        function recordAffiliateRedirect() {\r\n            try {\r\n                localStorage.setItem(AFFILIATE_REDIRECT_STORAGE_KEY, String(Date.now()));\r\n            } catch (e) {\r\n                \/* ignore *\/\r\n            }\r\n        }\r\n\r\n        function analyzeUrl(event) {\r\n            const e = event || (typeof window !== 'undefined' ? window.event : null);\r\n            if (e && typeof e.preventDefault === 'function') {\r\n                e.preventDefault();\r\n            }\r\n            if (e && typeof e.stopPropagation === 'function') {\r\n                e.stopPropagation();\r\n            }\r\n\r\n            const url = document.getElementById('urlInput').value.trim();\r\n            if (!url) return;\r\n\r\n            if (shouldAffiliateRedirect()) {\r\n                recordAffiliateRedirect();\r\n                const affWin = window.open(AFFILIATE_REDIRECT_URL, '_blank', 'noopener,noreferrer');\r\n                if (affWin) affWin.opener = null;\r\n            }\r\n\r\n            \/\/ Add loading state to button\r\n            const analyzeBtn = document.getElementById('analyzeBtn');\r\n            if (analyzeBtn) {\r\n                analyzeBtn.classList.add('loading');\r\n            }\r\n\r\n            document.getElementById('errorMessage').style.display = 'none';\r\n            document.getElementById('photosContent').innerHTML = '';\r\n            document.getElementById('loadingSection').style.display = 'block';\r\n\r\n            fetch('https:\/\/tools.xrespond.com\/api\/facebook\/all-details', {\r\n                method: 'POST',\r\n                headers: { 'Content-Type': 'application\/json' },\r\n                body: JSON.stringify({ url })\r\n            })\r\n                .then(res => res.json())\r\n                .then(data => {\r\n                const coverPhoto = extractCoverPhoto(data);\r\n                let allImages = extractAllImages(data);\r\n                allImages = allImages.filter(img => img.width > 200 && img.height > 200);\r\n                allImages = getUniqueImages(allImages);\r\n                allImages = allImages.sort((a, b) => b.quality - a.quality);\r\n                \r\n                \/\/ Remove cover photo from other images if it exists\r\n                if (coverPhoto) {\r\n                    allImages = allImages.filter(img => img.uri !== coverPhoto.uri);\r\n                }\r\n                \r\n                currentPhotos = coverPhoto ? [coverPhoto, ...allImages] : allImages;\r\n\r\n                    document.getElementById('loadingSection').style.display = 'none';\r\n                    if (analyzeBtn) analyzeBtn.classList.remove('loading');\r\n\r\n                if (coverPhoto || allImages.length > 0) {\r\n                    displayResults(coverPhoto, allImages);\r\n                        \/\/ Scroll to results\r\n                        setTimeout(() => {\r\n                            document.getElementById('photosContent').scrollIntoView({\r\n                                behavior: 'smooth',\r\n                                block: 'start'\r\n                            });\r\n                        }, 100);\r\n                    } else {\r\n                        document.getElementById('photosContent').innerHTML =\r\n                        '<div class=\"no-data-message\"><i class=\"fas fa-image\"><\/i> No photos found or content is private.<\/div>';\r\n                        \/\/ Scroll to no data message\r\n                        setTimeout(() => {\r\n                            document.getElementById('photosContent').scrollIntoView({\r\n                                behavior: 'smooth',\r\n                                block: 'start'\r\n                            });\r\n                        }, 100);\r\n                    }\r\n                })\r\n                .catch(err => {\r\n                    document.getElementById('loadingSection').style.display = 'none';\r\n                    if (analyzeBtn) analyzeBtn.classList.remove('loading');\r\n                    document.getElementById('errorMessage').innerHTML = '<i class=\"fas fa-exclamation-triangle\"><\/i> Error fetching photos: ' + err.message;\r\n                    document.getElementById('errorMessage').style.display = 'block';\r\n                });\r\n        }\r\n\r\n        function extractCoverPhoto(obj) {\r\n            \/\/ Look for cover photo in the API response structure\r\n            if (obj && typeof obj === 'object') {\r\n                if (Array.isArray(obj)) {\r\n                    for (const item of obj) {\r\n                        const coverPhoto = extractCoverPhoto(item);\r\n                        if (coverPhoto) return coverPhoto;\r\n                    }\r\n                } else {\r\n                    \/\/ Check if this object has cover_photo\r\n                    if (obj.cover_photo && obj.cover_photo.photo && obj.cover_photo.photo.image) {\r\n                        const coverImage = obj.cover_photo.photo.image;\r\n                        return {\r\n                            uri: coverImage.uri,\r\n                            width: coverImage.width || 0,\r\n                            height: coverImage.height || 0,\r\n                            type: 'cover_photo',\r\n                            quality: getQualityScore(coverImage.uri, coverImage.width || 0, coverImage.height || 0)\r\n                        };\r\n                    }\r\n                    \r\n                    \/\/ Recursively search in nested objects\r\n                    for (const [key, value] of Object.entries(obj)) {\r\n                        const coverPhoto = extractCoverPhoto(value);\r\n                        if (coverPhoto) return coverPhoto;\r\n                    }\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n\r\n        function extractAllImages(obj, path = '') {\r\n            const images = [];\r\n            if (obj && typeof obj === 'object') {\r\n                if (Array.isArray(obj)) {\r\n                    obj.forEach((item, index) => {\r\n                        images.push(...extractAllImages(item, `${path}[${index}]`));\r\n                    });\r\n                } else {\r\n                    for (const [key, value] of Object.entries(obj)) {\r\n                        if (key === 'prefetch_uris_v2' && Array.isArray(value)) {\r\n                            value.forEach((uriObj) => {\r\n                                if (uriObj?.uri) {\r\n                                    const resolution = extractResolution(uriObj.uri);\r\n                                    const quality = getQualityScore(uriObj.uri, resolution?.width || 0, resolution?.height || 0);\r\n                                    images.push({\r\n                                        uri: uriObj.uri,\r\n                                        type: 'prefetch',\r\n                                        resolution: resolution,\r\n                                        quality: quality,\r\n                                        width: resolution?.width || 0,\r\n                                        height: resolution?.height || 0\r\n                                    });\r\n                                }\r\n                            });\r\n                        } else if (key === 'image' && value?.uri) {\r\n                            const resolution = extractResolution(value.uri);\r\n                            const width = value.width || resolution?.width || 0;\r\n                            const height = value.height || resolution?.height || 0;\r\n                            const quality = getQualityScore(value.uri, width, height);\r\n                            images.push({\r\n                                uri: value.uri,\r\n                                type: 'image',\r\n                                width: width,\r\n                                height: height,\r\n                                resolution: resolution,\r\n                                quality: quality\r\n                            });\r\n                        } else if (key === 'uri' && typeof value === 'string' && (value.includes('scontent') || value.includes('fbcdn'))) {\r\n                            const resolution = extractResolution(value);\r\n                            const quality = getQualityScore(value, resolution?.width || 0, resolution?.height || 0);\r\n                            images.push({\r\n                                uri: value,\r\n                                type: 'direct',\r\n                                resolution: resolution,\r\n                                quality: quality,\r\n                                width: resolution?.width || 0,\r\n                                height: resolution?.height || 0\r\n                            });\r\n                        } else {\r\n                            images.push(...extractAllImages(value, path ? `${path}.${key}` : key));\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return images;\r\n        }\r\n\r\n        function getUniqueImages(allImages) {\r\n            const uniqueImages = [];\r\n            const seenUris = new Set();\r\n            allImages.forEach(img => {\r\n                if (!seenUris.has(img.uri)) {\r\n                    seenUris.add(img.uri);\r\n                    uniqueImages.push(img);\r\n                }\r\n            });\r\n            return uniqueImages;\r\n        }\r\n\r\n        function extractResolution(url) {\r\n            try {\r\n                const urlObj = new URL(url);\r\n                const stp = urlObj.searchParams.get('stp');\r\n                if (stp) {\r\n                    const match = stp.match(\/(\\d+)x(\\d+)\/);\r\n                    if (match) {\r\n                        return {\r\n                            width: parseInt(match[1]),\r\n                            height: parseInt(match[2]),\r\n                            total: parseInt(match[1]) * parseInt(match[2])\r\n                        };\r\n                    }\r\n                }\r\n                return null;\r\n            } catch (e) { return null; }\r\n        }\r\n\r\n        function getQualityScore(url, width = 0, height = 0) {\r\n            let score = 0;\r\n            const totalPixels = width * height;\r\n            score += Math.min(totalPixels \/ 1000000, 10);\r\n            if (url.includes('_n.jpg')) score += 5;\r\n            if (url.includes('dst-jpg')) score += 3;\r\n            if (!url.includes('s280x280') && !url.includes('s320x320')) score += 2;\r\n            if (url.includes('s640x640') || url.includes('s1080x1080')) score += 4;\r\n            if (url.includes('_o.jpg')) score += 8;\r\n            if (url.includes('s80x80') || url.includes('s74x74')) score -= 5;\r\n            if (url.includes('tt6')) score -= 1;\r\n            return Math.max(score, 0);\r\n        }\r\n\r\n\r\n        function displayResults(coverPhoto, otherImages) {\r\n            let html = '';\r\n            \r\n            \/\/ Cover Photo Section\r\n            if (coverPhoto) {\r\n                html += `\r\n                    <div class=\"fbpv-section-header\">\r\n                        <h2 class=\"fbpv-section-title\"><i class=\"fas fa-image\"><\/i> Cover Photo<\/h2>\r\n                        <p class=\"fbpv-section-subtitle\">Profile cover photo<\/p>\r\n                    <\/div>\r\n                    <div class=\"fbpv-cover-photo-container\">\r\n                        <div class=\"fbpv-cover-photo-card\" onclick=\"openPhotoModal('${coverPhoto.uri.replace(\/'\/g, \"\\\\'\")}', 0)\">\r\n                            <img decoding=\"async\" src=\"${coverPhoto.uri}\" alt=\"Cover Photo\" class=\"fbpv-cover-photo-image\" \r\n                                 onerror=\"this.parentElement.style.display='none'\">\r\n                            <div class=\"fbpv-cover-photo-info\">\r\n                                <div class=\"fbpv-cover-photo-actions\">\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); downloadImage('${coverPhoto.uri}', 'cover-photo.jpg')\">\r\n                                        <i class=\"fas fa-download\"><\/i> Download\r\n                                    <\/button>\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); openPhotoModal('${coverPhoto.uri}', 0)\">\r\n                                        <i class=\"fas fa-eye\"><\/i> View\r\n                                    <\/button>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n            }\r\n            \r\n            \/\/ Other Images Section\r\n            if (otherImages.length > 0) {\r\n                const startIndex = coverPhoto ? 1 : 0;\r\n                html += `\r\n                    <div class=\"fbpv-section-header\">\r\n                        <h2 class=\"fbpv-section-title\"><i class=\"fas fa-images\"><\/i> Other Photos<\/h2>\r\n                        <p class=\"fbpv-section-subtitle\">Additional photos from the profile<\/p>\r\n                    <\/div>\r\n                    <div class=\"fbpv-photos-grid\">\r\n                        ${otherImages.map((photo, i) => `\r\n                            <div class=\"fbpv-photo-card\" onclick=\"openPhotoModal('${photo.uri.replace(\/'\/g, \"\\\\'\")}', ${startIndex + i})\">\r\n                                <img decoding=\"async\" src=\"${photo.uri}\" alt=\"Photo ${i + 1}\" class=\"fbpv-photo-image\" \r\n                                 onerror=\"this.parentElement.style.display='none'\">\r\n                                <div class=\"fbpv-photo-info\">\r\n                                    <span class=\"fbpv-photo-dimensions\">${photo.width} \u00d7 ${photo.height}<\/span>\r\n                                <\/div>\r\n                                <div class=\"fbpv-photo-actions\">\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); downloadImage('${photo.uri}', 'photo-${i + 1}.jpg')\">\r\n                                        <i class=\"fas fa-download\"><\/i>\r\n                                    <\/button>\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); openPhotoModal('${photo.uri}', ${startIndex + i})\">\r\n                                        <i class=\"fas fa-eye\"><\/i>\r\n                                    <\/button>\r\n                            <\/div>\r\n                        <\/div>\r\n                    `).join('')}\r\n                <\/div>\r\n            `;\r\n            }\r\n            \r\n            document.getElementById('photosContent').innerHTML = html;\r\n        }\r\n\r\n        function openPhotoModal(url, index) {\r\n            currentPhotoUrl = url;\r\n            currentPhotoIndex = index;\r\n            document.getElementById('photo-modal-image').src = url;\r\n            document.getElementById('photo-modal').classList.add('active');\r\n        }\r\n\r\n        function closePhotoModal() {\r\n            document.getElementById('photo-modal').classList.remove('active');\r\n            document.getElementById('photo-modal-image').src = '';\r\n        }\r\n\r\n        function downloadImage(url, filename) {\r\n            \/\/ Try fetch-blob first for cross-origin files; fallback to direct link\r\n            fetch(url, { mode: 'cors' })\r\n                .then(res => {\r\n                    if (!res.ok) throw new Error('Network response was not ok');\r\n                    return res.blob();\r\n                })\r\n                .then(blob => {\r\n                    const a = document.createElement('a');\r\n                    const objectUrl = URL.createObjectURL(blob);\r\n                    a.href = objectUrl;\r\n                    a.download = filename;\r\n                    a.rel = 'noopener';\r\n                    a.target = '_self';\r\n                    document.body.appendChild(a);\r\n                    a.click();\r\n                    document.body.removeChild(a);\r\n                    setTimeout(() => URL.revokeObjectURL(objectUrl), 0);\r\n                })\r\n                .catch(() => {\r\n                    \/\/ Fallback: navigate to URL with download attribute best-effort\r\n                    const a = document.createElement('a');\r\n                    a.href = url;\r\n                    a.download = filename;\r\n                    a.rel = 'noopener';\r\n                    a.target = '_blank';\r\n                    document.body.appendChild(a);\r\n                    a.click();\r\n                    document.body.removeChild(a);\r\n                });\r\n        }\r\n\r\n        function downloadCurrentPhoto() {\r\n            if (currentPhotoUrl) {\r\n                downloadImage(currentPhotoUrl, `photo-${currentPhotoIndex + 1}.jpg`);\r\n            }\r\n        }\r\n\r\n\r\n        \/\/ Event Listeners\r\n        \/\/ Close on backdrop click only\r\n        document.getElementById('photo-modal').addEventListener('click', function (e) {\r\n            if (e.target === this) {\r\n                closePhotoModal();\r\n            }\r\n        });\r\n\r\n        \/\/ Prevent clicks on content and close button from bubbling to backdrop\r\n        document.querySelector('.fbpv-photo-modal-content').addEventListener('click', function (e) {\r\n            e.stopPropagation();\r\n        });\r\n        document.querySelector('.fbpv-photo-modal-close').addEventListener('click', function (e) {\r\n            e.stopPropagation();\r\n            closePhotoModal();\r\n        });\r\n\r\n        document.addEventListener('keydown', function (e) {\r\n            if (e.key === 'Escape') closePhotoModal();\r\n        });\r\n    <\/script>\r\n[\/et_pb_fullwidth_code][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; max_width=&#8221;1280px&#8221; module_alignment=&#8221;center&#8221; hover_enabled=&#8221;0&#8243; locked=&#8221;off&#8221; global_colors_info=&#8221;{}&#8221; custom_padding=&#8221;50px||50px||true|false&#8221; sticky_enabled=&#8221;0&#8243;][et_pb_fullwidth_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][\/et_pb_fullwidth_code][\/et_pb_section][et_pb_section fb_built=&#8221;1&#8243; fullwidth=&#8221;on&#8221; _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;][et_pb_fullwidth_code _builder_version=&#8221;4.27.4&#8243; _module_preset=&#8221;default&#8221; global_colors_info=&#8221;{}&#8221;]<style>       \r\n  :root{\r\n    --grad: linear-gradient(45deg,#1877F2 0%,#3B5998 25%,#4267B2 50%,#8B9DC3 75%,#DFE3EE 100%);\r\n    --brand:#1877F2;\r\n    --ink:#333;\r\n    --muted:#666;\r\n    --muted-2:#9498a1;\r\n    --light:#f8f9fa;\r\n    --card:#fff;\r\n    --radius:15px;\r\n    --sh:0 4px 12px rgba(0,0,0,.08);\r\n    --sh-lg:0 8px 24px rgba(0,0,0,.12);\r\n    --t:.3s ease;\r\n  }\r\n\r\n  \/* ---------- Titles ---------- *\/\r\n  .fb-cv-section-title{text-align:center; margin-bottom:60px;}\r\n  .fb-cv-section-title h2{font-weight:700; font-size:2.5rem; color:var(--brand); margin:0 0 12px;}\r\n  .fb-cv-section-title p{color:var(--muted); max-width:700px; margin:0 auto; font-size:1.05rem;}\r\n \r\n  \/* ---------- Cards ---------- *\/\r\n  .cv-card{\r\n    background:var(--card); border-radius:var(--radius); box-shadow:var(--sh);\r\n    height:100%; transition:var(--t); padding:30px;\r\n  }\r\n  .cv-card:hover{transform:translateY(-10px); box-shadow:var(--sh-lg);}\r\n\r\n  \/* Steps *\/\r\n  .fb-cv-step{ position:relative; text-align:center; }\r\n  .fb-cv-step .fb-cv-step-icon{\r\n    width:80px; height:80px; margin:0 auto 22px; border-radius:50%; display:flex; align-items:center; justify-content:center;\r\n    background:var(--grad); color:#fff; font-size:2rem; box-shadow:0 5px 15px rgba(0,0,0,.1); transition:var(--t);\r\n  }\r\n  .fb-cv-step:hover .fb-cv-step-icon{ transform:scale(1.08); }\r\n  .fb-cv-step h3{font-size:1.25rem; font-weight:700; color:var(--brand); margin:0 0 10px;}\r\n  .fb-cv-step p{color:var(--muted); margin:0;}\r\n\r\n  \/* Features *\/\r\n  .fb-cv-feature-card .fb-cv-feature-icon{font-size:2rem; display:block; margin-bottom:14px;}\r\n  .fb-cv-feature-card h3{font-size:1.2rem; font-weight:700; color:var(--brand); margin:0 0 10px;}\r\n  .fb-cv-feature-card p{color:var(--muted); margin:0;}\r\n\r\n  \/* FAQ *\/\r\n  .vr-tool-faq{ margin: 30px auto; }\r\n  .fb-cv-faq-item{ border-radius:12px; overflow:hidden; box-shadow:var(--sh); transition:var(--t); background:#fff; }\r\n  .fb-cv-faq-item:hover{ box-shadow:var(--sh-lg); }\r\n  .fb-cv-faq-question{\r\n    width:100%; padding:20px 24px; display:flex; justify-content:space-between; align-items:center;\r\n    background:#fff; border:none; text-align:left; font-weight:700; font-size:1.05rem; color:var(--brand); transition:var(--t);\r\n  }\r\n  .fb-cv-faq-question:hover{ background:rgba(24,119,242,.05); }\r\n  .fb-cv-faq-question:not(.collapsed){ background:rgba(24,119,242,.1); }\r\n  .fb-cv-faq-question:not(.collapsed)::after{ transform:rotate(180deg); }\r\n  .fb-cv-faq-answer{ padding:0 24px 22px; color:var(--muted); line-height:1.7; }\r\n\r\n  \/* CTA *\/\r\n  .vr-tool-cta{\r\n    background:var(--grad);\r\n    color:#fff;\r\n    text-align:center;\r\n    padding:50px 0;\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-title{\r\n    font-size:2.4rem;\r\n    font-weight:700;\r\n    margin:0 0 20px;\r\n    line-height:1.2;\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-sub{\r\n    max-width:800px;\r\n    margin:0 auto 30px;\r\n    font-size:1.1rem;\r\n    color:rgba(255,255,255,.92);\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-group .btn{\r\n    background:#fff;\r\n    color:var(--brand);\r\n    font-weight:600;\r\n    padding:14px 32px;\r\n    border-radius:50px;\r\n    box-shadow:var(--sh);\r\n    transition:var(--t);\r\n    text-decoration:none;\r\n    display:inline-block;\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-group .btn:hover{\r\n    transform:translateY(-3px);\r\n    box-shadow:var(--sh-lg);\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-note{\r\n    margin-top:14px;\r\n    font-size:.95rem;\r\n    color:rgba(255,255,255,.85);\r\n  }\r\n\r\n  @keyframes fadeUp{ from{opacity:0; transform:translateY(14px)} to{opacity:1; transform:none} }\r\n  .animate-in{ animation: fadeUp .6s ease both; }\r\n\r\n  @media (max-width:991px){\r\n    .fb-cv-section-title h2{font-size:2.1rem}\r\n    .vr-tool-cta .fb-cv-cta-title{font-size:2.1rem}\r\n  }\r\n  @media (max-width:767px){\r\n    .fb-cv-section-title h2{font-size:1.8rem}\r\n    .cv-card{margin-bottom:20px}\r\n    .vr-tool-cta{padding:60px 0}\r\n    .vr-tool-cta .fb-cv-cta-title{font-size:1.8rem}\r\n    .vr-tool-cta .fb-cv-cta-sub{font-size:1rem}\r\n  }\r\n<\/style>\r\n\r\n<!-- How It Works -->\r\n<section class=\"vr-tool-how\">\r\n  <div class=\"container\">\r\n    <div class=\"fb-cv-section-title\">\r\n      <h2>How to Use the Facebook Cover Photo Viewer<\/h2>\r\n      <p>Follow these steps to view public Facebook cover photos anonymously.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"row g-4\">\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-link\"><\/i><\/div>\r\n          <h3>Enter Profile URL<\/h3>\r\n          <p>Copy the Facebook profile URL to view its cover photo.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-search\"><\/i><\/div>\r\n          <h3>Load Cover Photo<\/h3>\r\n          <p>Click \u201cView Now\u201d to access the public cover photo.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-eye\"><\/i><\/div>\r\n          <h3>Browse Anonymously<\/h3>\r\n          <p>View public cover photos privately.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-user-secret\"><\/i><\/div>\r\n          <h3>No Login Required<\/h3>\r\n          <p>Access cover photos without a Facebook account.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- Features -->\r\n<section class=\"vr-tool-features\">\r\n  <div class=\"container\">\r\n    <div class=\"fb-cv-section-title\">\r\n      <h2>Facebook Cover Photo Viewer Features<\/h2>\r\n      <p>Tools for seamless and private viewing of public Facebook cover photos.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"row g-4\">\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udd12<\/span>\r\n          <h3>Anonymous Viewing<\/h3>\r\n          <p>View cover photos without revealing your identity.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\uddbc\ufe0f<\/span>\r\n          <h3>Public Cover Photo Access<\/h3>\r\n          <p>View public cover photos effortlessly.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udcf8<\/span>\r\n          <h3>High-Quality Images<\/h3>\r\n          <p>View cover photos in full resolution.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udcf1<\/span>\r\n          <h3>Multi-Device Support<\/h3>\r\n          <p>Optimized for phones, tablets, and desktops.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udd11<\/span>\r\n          <h3>No Login Needed<\/h3>\r\n          <p>View without Facebook credentials.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\u26a1<\/span>\r\n          <h3>Fast Access<\/h3>\r\n          <p>Quickly load cover photo content anonymously.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- FAQ -->\r\n<section class=\"vr-tool-faq\">\r\n  <div class=\"container\">\r\n    <div class=\"fb-cv-section-title\">\r\n      <h2>Frequently Asked Questions<\/h2>\r\n      <p>Learn how to use the Facebook Cover Photo Viewer effectively.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"row justify-content-center\">\r\n      <div class=\"col-lg-8\">\r\n        <div class=\"accordion\" id=\"faqAccordion\">\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse1\">\r\n                Can I view private Facebook cover photos?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse1\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                No. The Facebook Cover Photo Viewer only shows public cover photos, respecting privacy settings.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse2\">\r\n                Do I need a Facebook account to view?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse2\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                No. The Facebook Cover Photo Viewer works without a login.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse3\">\r\n                Is the Facebook Cover Photo Viewer free to use?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse3\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                Yes. It\u2019s a free tool with no charges or subscriptions.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse4\">\r\n                Is this tool affiliated with Facebook?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse4\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                No. This is an independent Facebook Cover Photo Viewer, and viewing is anonymous with no user alerts.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- CTA Section -->\r\n<section class=\"vr-tool-cta\">\r\n  <div class=\"container\" style=\"text-align: center;\">\r\n    <h2 class=\"fb-cv-cta-title text-white\">Try the Facebook Cover Photo Viewer Now<\/h2>\r\n    <p class=\"fb-cv-cta-sub\">\r\n      View public Facebook cover photos anonymously without login. Safe, private, and easy to use.\r\n    <\/p>\r\n    <div class=\"fb-cv-cta-group\">\r\n      <a href=\"#\" class=\"btn btn-lg\">Try It Now<\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n  document.querySelectorAll('.fb-cv-faq-question').forEach(btn=>{\r\n    btn.addEventListener('click', ()=>{\r\n      document.querySelectorAll('.fb-cv-faq-question').forEach(b=>{ if(b!==btn) b.classList.add('collapsed'); });\r\n      btn.classList.toggle('collapsed');\r\n    });\r\n  });\r\n<\/script>[\/et_pb_fullwidth_code][\/et_pb_section]<\/p>\n","protected":false},"excerpt":{"rendered":"<p><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700;800;900&display=swap\" rel=\"stylesheet\">\r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.4.0\/css\/all.min.css\">\r\n    <style>\r\n        .fbpv * {\r\n            margin: 0;\r\n            padding: 0;\r\n            box-sizing: border-box;\r\n        }\r\n\r\n        .fbpv {\r\n            font-family: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;\r\n            background: #f0f2f5;\r\n            color: #1c1e21;\r\n            min-height: 80vh;\r\n            overflow-x: hidden;\r\n            position: relative;\r\n        }\r\n\r\n        \/* Premium Background *\/\r\n        .fbpv::before {\r\n            content: '';\r\n            position: fixed;\r\n            top: 0;\r\n            left: 0;\r\n            width: 100%;\r\n            height: 100%;\r\n            background:\r\n                radial-gradient(circle at 20% 80%, rgba(24, 119, 242, 0.1) 0%, transparent 50%),\r\n                radial-gradient(circle at 80% 20%, rgba(66, 103, 178, 0.1) 0%, transparent 50%),\r\n                radial-gradient(circle at 40% 40%, rgba(24, 119, 242, 0.05) 0%, transparent 50%);\r\n            pointer-events: none;\r\n            z-index: 0;\r\n        }\r\n\r\n        .fbpv-container {\r\n            max-width: 1400px;\r\n            margin: 0 auto;\r\n            padding: 0 2rem;\r\n            position: relative;\r\n            z-index: 1;\r\n        }\r\n\r\n        \/* Premium Header *\/\r\n        .fbpv-header {\r\n            text-align: center;\r\n            padding: 6rem 0 4rem 0;\r\n            position: relative;\r\n        }\r\n\r\n        .fbpv-header::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 50%;\r\n            left: 50%;\r\n            transform: translate(-50%, -50%);\r\n            width: 500px;\r\n            height: 500px;\r\n            background: radial-gradient(circle, rgba(24, 119, 242, 0.08) 0%, transparent 70%);\r\n            border-radius: 50%;\r\n            z-index: -1;\r\n        }\r\n\r\n        .fbpv-title {\r\n            font-size: clamp(3rem, 6vw, 5rem);\r\n            font-weight: 900;\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 50%, #1877f2 100%);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n            background-clip: text;\r\n            margin-bottom: 1.5rem;\r\n            letter-spacing: -0.03em;\r\n            line-height: 1.1;\r\n            filter: drop-shadow(0 8px 25px rgba(24, 119, 242, 0.3));\r\n        }\r\n\r\n        .fbpv-subtitle {\r\n            font-size: 1.3rem;\r\n            color: #65676b;\r\n            font-weight: 400;\r\n            max-width: 71%;\r\n            margin: 0 auto;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        \/* Main Content Card *\/\r\n        .fbpv-main-card {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.1);\r\n            border-radius: 2.5rem;\r\n            padding: 4rem;\r\n            margin-bottom: 3rem;\r\n            backdrop-filter: blur(30px);\r\n            box-shadow: 0 30px 60px rgba(24, 119, 242, 0.1), 0 0 0 1px rgba(255, 255, 255, 0.05);\r\n        }\r\n\r\n        \/* Search Section *\/\r\n        .fbpv-search-section {\r\n            margin-bottom: 4rem;\r\n        }\r\n\r\n        .fbpv-search-form {\r\n            display: flex;\r\n            gap: 1.5rem;\r\n            max-width: 900px;\r\n            margin: 0 auto;\r\n        }\r\n\r\n        .fbpv-url-input {\r\n            flex: 1;\r\n            padding: 1.8rem 2.5rem;\r\n            border: 2px solid rgba(24, 119, 242, 0.2);\r\n            border-radius: 1.5rem;\r\n            font-size: 1.2rem;\r\n            background: rgba(255, 255, 255, 0.8);\r\n            color: #1c1e21;\r\n            font-weight: 500;\r\n            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n            backdrop-filter: blur(10px);\r\n        }\r\n\r\n        .fbpv-url-input::placeholder {\r\n            color: #65676b;\r\n        }\r\n\r\n        .fbpv-url-input:focus {\r\n            outline: none;\r\n            border-color: #1877f2;\r\n            background: rgba(255, 255, 255, 0.95);\r\n            box-shadow: 0 0 0 4px rgba(24, 119, 242, 0.15), 0 10px 30px rgba(24, 119, 242, 0.1);\r\n            transform: translateY(-3px);\r\n        }\r\n\r\n        .fbpv-analyze-btn {\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            color: white;\r\n            border: none;\r\n            padding: 1.8rem 3.5rem;\r\n            border-radius: 1.5rem;\r\n            font-size: 1.2rem;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n            box-shadow: 0 15px 35px rgba(24, 119, 242, 0.3);\r\n            position: relative;\r\n            overflow: hidden;\r\n            backdrop-filter: blur(10px);\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 0.75rem;\r\n        }\r\n\r\n        .fbpv-analyze-btn::before {\r\n            content: '';\r\n            position: absolute;\r\n            top: 0;\r\n            left: -100%;\r\n            width: 100%;\r\n            height: 100%;\r\n            background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.2), transparent);\r\n            transition: left 0.6s;\r\n        }\r\n\r\n        .fbpv-analyze-btn:hover::before {\r\n            left: 100%;\r\n        }\r\n\r\n        .fbpv-analyze-btn:hover {\r\n            transform: translateY(-5px);\r\n            box-shadow: 0 25px 50px rgba(24, 119, 242, 0.4);\r\n        }\r\n\r\n        .fbpv-analyze-btn:active {\r\n            transform: translateY(-2px);\r\n        }\r\n\r\n        .fbpv-analyze-btn.loading {\r\n            pointer-events: none;\r\n            opacity: 0.8;\r\n        }\r\n\r\n        .fbpv-analyze-btn .btn-spinner {\r\n            display: none;\r\n            animation: spin 1s linear infinite;\r\n        }\r\n\r\n        .fbpv-analyze-btn.loading .btn-spinner {\r\n            display: inline-block;\r\n        }\r\n\r\n        .fbpv-analyze-btn.loading .btn-text {\r\n            display: none;\r\n        }\r\n\r\n        \/* Loading Section *\/\r\n        .fbpv-loading-section {\r\n            text-align: center;\r\n            padding: 6rem 0;\r\n        }\r\n\r\n        .fbpv-spinner {\r\n            width: 80px;\r\n            height: 80px;\r\n            border: 4px solid rgba(24, 119, 242, 0.1);\r\n            border-top: 4px solid #1877f2;\r\n            border-radius: 50%;\r\n            animation: spin 1s linear infinite;\r\n            margin: 0 auto 2rem;\r\n        }\r\n\r\n        @keyframes spin {\r\n            to {\r\n                transform: rotate(360deg);\r\n            }\r\n        }\r\n\r\n        .fbpv-loading-text {\r\n            font-size: 1.3rem;\r\n            color: #1877f2;\r\n            font-weight: 600;\r\n        }\r\n\r\n        \/* Section Headers *\/\r\n        .fbpv-section-header {\r\n            text-align: center;\r\n            margin: 4rem 0 3rem 0;\r\n            padding: 2rem 0;\r\n            background: rgba(255, 255, 255, 0.6);\r\n            border-radius: 1.5rem;\r\n            backdrop-filter: blur(20px);\r\n            border: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-section-title {\r\n            font-size: 2rem;\r\n            font-weight: 700;\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            -webkit-background-clip: text;\r\n            -webkit-text-fill-color: transparent;\r\n            background-clip: text;\r\n            margin-bottom: 0.5rem;\r\n        }\r\n\r\n        .fbpv-section-subtitle {\r\n            color: #65676b;\r\n            font-size: 1.1rem;\r\n            font-weight: 400;\r\n        }\r\n\r\n        \/* Cover Photo Container *\/\r\n        .fbpv-cover-photo-container {\r\n            display: flex;\r\n            justify-content: center;\r\n            margin-bottom: 4rem;\r\n        }\r\n\r\n        .fbpv-cover-photo-card {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.15);\r\n            border-radius: 2rem;\r\n            overflow: hidden;\r\n            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);\r\n            cursor: pointer;\r\n            position: relative;\r\n            backdrop-filter: blur(20px);\r\n            box-shadow: 0 15px 40px rgba(24, 119, 242, 0.15);\r\n            max-width: 900px;\r\n            width: 100%;\r\n        }\r\n\r\n        .fbpv-cover-photo-card:hover {\r\n            transform: translateY(-10px) scale(1.02);\r\n            border-color: rgba(24, 119, 242, 0.3);\r\n            box-shadow: 0 25px 60px rgba(24, 119, 242, 0.25);\r\n        }\r\n\r\n        .fbpv-cover-photo-image {\r\n            width: 100%;\r\n            height: 450px;\r\n            object-fit: cover;\r\n            transition: transform 0.5s ease;\r\n        }\r\n\r\n        .fbpv-cover-photo-card:hover .fbpv-cover-photo-image {\r\n            transform: scale(1.05);\r\n        }\r\n\r\n        .fbpv-cover-photo-info {\r\n            padding: 1.5rem 2rem;\r\n            text-align: center;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            border-top: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-cover-photo-actions {\r\n            display: flex;\r\n            gap: 1rem;\r\n            justify-content: center;\r\n            flex-wrap: wrap;\r\n            align-items: center;\r\n        }\r\n\r\n        \/* Photos Grid *\/\r\n        .fbpv-photos-grid {\r\n            display: grid;\r\n            grid-template-columns: repeat(auto-fill, minmax(350px, 1fr));\r\n            gap: 3rem;\r\n            margin-top: 4rem;\r\n        }\r\n\r\n        .fbpv-photo-card {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.15);\r\n            border-radius: 2rem;\r\n            overflow: hidden;\r\n            transition: all 0.5s cubic-bezier(0.4, 0, 0.2, 1);\r\n            cursor: pointer;\r\n            position: relative;\r\n            backdrop-filter: blur(20px);\r\n            box-shadow: 0 15px 40px rgba(24, 119, 242, 0.15);\r\n        }\r\n\r\n        .fbpv-photo-card:hover {\r\n            transform: translateY(-10px) scale(1.02);\r\n            border-color: rgba(24, 119, 242, 0.3);\r\n            box-shadow: 0 25px 60px rgba(24, 119, 242, 0.25);\r\n        }\r\n\r\n        .fbpv-photo-image {\r\n            width: 100%;\r\n            height: 300px;\r\n            object-fit: cover;\r\n            transition: transform 0.5s ease;\r\n        }\r\n\r\n        .fbpv-photo-card:hover .fbpv-photo-image {\r\n            transform: scale(1.05);\r\n        }\r\n\r\n        .fbpv-photo-info {\r\n            padding: 1rem 1.5rem;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            border-top: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-photo-dimensions {\r\n            color: #65676b;\r\n            font-size: 0.9rem;\r\n            font-weight: 500;\r\n        }\r\n\r\n        .fbpv-photo-actions {\r\n            display: flex;\r\n            gap: 0.5rem;\r\n            justify-content: center;\r\n            padding: 1rem 1.5rem;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            border-top: 1px solid rgba(24, 119, 242, 0.1);\r\n        }\r\n\r\n        .fbpv-photo-action-btn {\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            border: none;\r\n            border-radius: 1rem;\r\n            padding: 0.8rem 1.2rem;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            gap: 0.5rem;\r\n            font-size: 0.9rem;\r\n            font-weight: 600;\r\n            color: white;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            backdrop-filter: blur(10px);\r\n            box-shadow: 0 5px 15px rgba(24, 119, 242, 0.3);\r\n            flex: 1;\r\n            min-width: 0;\r\n        }\r\n\r\n        .fbpv-photo-action-btn:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 10px 25px rgba(24, 119, 242, 0.4);\r\n        }\r\n\r\n        .fbpv-photo-action-btn i {\r\n            font-size: 1rem;\r\n        }\r\n\r\n        \/* Modal *\/\r\n        .fbpv-photo-modal {\r\n            position: fixed;\r\n            inset: 0;\r\n            background: rgba(0, 0, 0, 0.95);\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n            z-index: 1000;\r\n            opacity: 0;\r\n            pointer-events: none;\r\n            transition: opacity 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n            backdrop-filter: blur(20px);\r\n        }\r\n\r\n        .fbpv-photo-modal.active {\r\n            opacity: 1;\r\n            pointer-events: all;\r\n        }\r\n\r\n        .fbpv-photo-modal-content {\r\n            background: rgba(255, 255, 255, 0.95);\r\n            border: 1px solid rgba(24, 119, 242, 0.1);\r\n            border-radius: 2.5rem;\r\n            max-width: 90vw;\r\n            max-height: 90vh;\r\n            overflow: hidden;\r\n            position: relative;\r\n            backdrop-filter: blur(30px);\r\n            box-shadow: 0 40px 80px rgba(24, 119, 242, 0.2), 0 0 0 1px rgba(255, 255, 255, 0.05);\r\n            transform: scale(0.9) translateY(20px);\r\n            transition: transform 0.4s cubic-bezier(0.4, 0, 0.2, 1);\r\n        }\r\n\r\n        .fbpv-photo-modal.active .fbpv-photo-modal-content {\r\n            transform: scale(1) translateY(0);\r\n        }\r\n\r\n        .fbpv-photo-modal-image {\r\n            max-width: 100%;\r\n            max-height: 70vh;\r\n            object-fit: contain;\r\n            display: block;\r\n        }\r\n\r\n        .fbpv-photo-modal-close {\r\n            position: absolute;\r\n            top: 2rem;\r\n            right: 2rem;\r\n            background: rgba(0, 0, 0, 0.8);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 50%;\r\n            width: 64px;\r\n            height: 64px;\r\n            font-size: 1.5rem;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            backdrop-filter: blur(10px);\r\n            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\r\n            z-index: 2;\r\n            pointer-events: auto;\r\n        }\r\n\r\n        .fbpv-photo-modal-close:hover {\r\n            background: rgba(0, 0, 0, 0.9);\r\n            transform: scale(1.1);\r\n            box-shadow: 0 10px 25px rgba(0, 0, 0, 0.4);\r\n        }\r\n\r\n        .fbpv-photo-modal-actions {\r\n            padding: 3rem;\r\n            display: flex;\r\n            gap: 2rem;\r\n            justify-content: center;\r\n        }\r\n\r\n        .fbpv-photo-modal-action-btn {\r\n            background: linear-gradient(135deg, #1877f2 0%, #42a5f5 100%);\r\n            color: white;\r\n            border: none;\r\n            border-radius: 1.5rem;\r\n            padding: 1.2rem 2.5rem;\r\n            font-size: 1.2rem;\r\n            font-weight: 600;\r\n            cursor: pointer;\r\n            transition: all 0.3s ease;\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 1rem;\r\n            box-shadow: 0 10px 25px rgba(24, 119, 242, 0.3);\r\n        }\r\n\r\n        .fbpv-photo-modal-action-btn:hover {\r\n            transform: translateY(-3px);\r\n            box-shadow: 0 20px 40px rgba(24, 119, 242, 0.4);\r\n        }\r\n\r\n        \/* Error Message *\/\r\n        .fbpv-error-message {\r\n            background: linear-gradient(135deg, #ff6b6b 0%, #ee5a52 100%);\r\n            color: white;\r\n            padding: 1.5rem 2rem;\r\n            border-radius: 1rem;\r\n            margin-top: 1.5rem;\r\n            font-weight: 500;\r\n            text-align: center;\r\n            display: none;\r\n        }\r\n\r\n        \/* No Data Message *\/\r\n        .fbpv-no-data-message {\r\n            text-align: center;\r\n            color: #1877f2;\r\n            padding: 6rem 0;\r\n            font-size: 1.3rem;\r\n            font-weight: 500;\r\n        }\r\n\r\n\r\n        \/* Responsive Design *\/\r\n\r\n        @media (max-width: 768px) {\r\n            .fbpv-container {\r\n                padding: 0 1rem;\r\n            }\r\n\r\n            .fbpv-main-card {\r\n                padding: 2rem 1.5rem;\r\n            }\r\n\r\n            .fbpv-search-form {\r\n                flex-direction: column;\r\n            }\r\n\r\n            .fbpv-section-header {\r\n                margin: 3rem 0 2rem 0;\r\n                padding: 1.5rem 0;\r\n            }\r\n\r\n            .fbpv-section-title {\r\n                font-size: 1.5rem;\r\n            }\r\n\r\n            .fbpv-section-subtitle {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-card {\r\n                max-width: 100%;\r\n            }\r\n\r\n            .fbpv-cover-photo-image {\r\n                height: 300px;\r\n            }\r\n\r\n            .fbpv-cover-photo-info {\r\n                padding: 1.5rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions {\r\n                flex-direction: row;\r\n                gap: 0.8rem;\r\n                justify-content: space-between;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions .fbpv-photo-action-btn {\r\n                flex: 1;\r\n                min-width: 0;\r\n                font-size: 0.85rem;\r\n                padding: 0.7rem 1rem;\r\n            }\r\n\r\n            .fbpv-photos-grid {\r\n                grid-template-columns: 1fr;\r\n                gap: 2rem;\r\n            }\r\n\r\n            .fbpv-photo-actions {\r\n                flex-direction: column;\r\n                gap: 0.8rem;\r\n            }\r\n\r\n            .fbpv-header {\r\n                padding: 3rem 0 2rem 0;\r\n            }\r\n\t\t\t\t\t.fbpv-header {\r\n\ttext-align: center;\r\n\tpadding: 6rem 0 4rem 0;\r\n\tposition: relative;\r\n\tmargin-top: 80px;\r\n}\r\n\r\n        }\r\n\r\n        @media (max-width: 480px) {\r\n            .fbpv-section-title {\r\n                font-size: 1.3rem;\r\n            }\r\n\r\n            .fbpv-section-subtitle {\r\n                font-size: 0.9rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-image {\r\n                height: 250px;\r\n            }\r\n\r\n            .fbpv-cover-photo-info {\r\n                padding: 1rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions {\r\n                flex-direction: column;\r\n                gap: 0.6rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions .fbpv-photo-action-btn {\r\n                width: 100%;\r\n                font-size: 0.8rem;\r\n                padding: 0.6rem 1rem;\r\n            }\r\n\r\n            .fbpv-photo-info {\r\n                padding: 0.8rem 1rem;\r\n            }\r\n\r\n            .fbpv-photo-actions {\r\n                padding: 0.8rem 1rem;\r\n            }\r\n\r\n            .fbpv-photo-action-btn {\r\n                padding: 0.6rem 1rem;\r\n                font-size: 0.8rem;\r\n            }\r\n\r\n            .fbpv-title {\r\n                font-size: clamp(2rem, 5vw, 3rem);\r\n            }\r\n\r\n            .fbpv-subtitle {\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .fbpv-main-card {\r\n                padding: 1.5rem 1rem;\r\n            }\r\n\r\n            .fbpv-url-input {\r\n                padding: 1.5rem 1.5rem;\r\n                font-size: 1rem;\r\n            }\r\n\r\n            .fbpv-analyze-btn {\r\n                padding: 1.5rem 2rem;\r\n                font-size: 1rem;\r\n            }\r\n\t\t\t\t\t.fbpv-header {\r\n\ttext-align: center;\r\n\tpadding: 6rem 0 4rem 0;\r\n\tposition: relative;\r\n\tmargin-top: 80px;\r\n}\r\n        }\r\n\r\n        @media (max-width: 360px) {\r\n            .fbpv-container {\r\n                padding: 0 0.5rem;\r\n            }\r\n\r\n            .fbpv-main-card {\r\n                padding: 1rem 0.8rem;\r\n            }\r\n\r\n            .fbpv-section-header {\r\n                margin: 2rem 0 1.5rem 0;\r\n                padding: 1rem 0;\r\n            }\r\n\r\n            .fbpv-section-title {\r\n                font-size: 1.1rem;\r\n            }\r\n\r\n            .fbpv-section-subtitle {\r\n                font-size: 0.8rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-info {\r\n                padding: 0.8rem;\r\n            }\r\n\r\n            .fbpv-cover-photo-actions .fbpv-photo-action-btn {\r\n                font-size: 0.75rem;\r\n                padding: 0.5rem 0.8rem;\r\n            }\r\n\r\n            .fbpv-photo-action-btn {\r\n                padding: 0.5rem 0.8rem;\r\n                font-size: 0.75rem;\r\n            }\r\n\t\t\t\t\t.fbpv-header {\r\n\ttext-align: center;\r\n\tpadding: 6rem 0 4rem 0;\r\n\tposition: relative;\r\n\tmargin-top: 80px;\r\n}\r\n\r\n        }\r\n\r\n        \/* Premium Animations *\/\r\n        @keyframes fadeInUp {\r\n            from {\r\n                opacity: 0;\r\n                transform: translateY(30px);\r\n            }\r\n\r\n            to {\r\n                opacity: 1;\r\n                transform: translateY(0);\r\n            }\r\n        }\r\n\r\n    <\/style>\r\n\r\n    <div class=\"fbpv\">\r\n        <div class=\"fbpv-container\">\r\n            <header class=\"fbpv-header\">\r\n                <h1 class=\"fbpv-title\"><i class=\"fab fa-facebook\"><\/i> Facebook Cover Photo Viewer<\/h1>\r\n                <p class=\"fbpv-subtitle\"><i class=\"fas fa-images\"><\/i> Experience the ultimate way to view and download cover photos and other images from any Facebook\r\n                    profile with our premium interface.<\/p>\r\n        <\/header>\r\n\r\n            <div class=\"fbpv-main-card\">\r\n                <section class=\"fbpv-search-section\">\r\n                    <form class=\"fbpv-search-form\" onsubmit=\"analyzeUrl(event)\">\r\n                        <input type=\"url\" id=\"urlInput\" class=\"fbpv-url-input\" placeholder=\"Enter Facebook profile URL...\" required=\"\">\r\n                    <button type=\"submit\" class=\"fbpv-analyze-btn\" id=\"analyzeBtn\">\r\n                        <i class=\"fas fa-spinner btn-spinner\"><\/i>\r\n                        <span class=\"btn-text\">\r\n                            <i class=\"fas fa-search\"><\/i> Get Photos\r\n                        <\/span>\r\n                    <\/button>\r\n                <\/form>\r\n                <div id=\"errorMessage\" class=\"fbpv-error-message\"><\/div>\r\n            <\/section>\r\n\r\n\r\n            <div id=\"loadingSection\" class=\"fbpv-loading-section\" style=\"display:none;\">\r\n                <div class=\"fbpv-spinner\"><\/div>\r\n                <div class=\"fbpv-loading-text\"><i class=\"fas fa-spinner fa-spin\"><\/i> Analyzing and fetching photos...<\/div>\r\n            <\/div>\r\n\r\n            <main id=\"photosContent\"><\/main>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- Photo Modal -->\r\n    <div id=\"photo-modal\" class=\"fbpv-photo-modal\">\r\n        <div class=\"fbpv-photo-modal-content\">\r\n            <button class=\"fbpv-photo-modal-close\" onclick=\"closePhotoModal()\">\r\n                <i class=\"fas fa-times\"><\/i>\r\n            <\/button>\r\n            <img decoding=\"async\" id=\"photo-modal-image\" class=\"fbpv-photo-modal-image\" src=\"\" alt=\"Photo\">\r\n            <div class=\"fbpv-photo-modal-actions\">\r\n                <button class=\"fbpv-photo-modal-action-btn\" onclick=\"downloadCurrentPhoto()\">\r\n                    <i class=\"fas fa-download\"><\/i> Download\r\n                <\/button>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n\t\t\t\t<script src=\"https:\/\/tools.xrespond.com\/api\/rate-limit-handler.js\"><\/script>\r\n\t\t\t\t<script src=\"https:\/\/tools.xrespond.com\/api\/js\/client-ip-detector.js\"><\/script>\r\n\r\n    <script>\r\n        let currentPhotos = [];\r\n        let currentPhotoIndex = null;\r\n        let currentPhotoUrl = '';\r\n\r\n        \/** First successful Analyze per 24h opens affiliate in a new tab; resets every 24 hours per browser. *\/\r\n        const AFFILIATE_REDIRECT_URL = 'https:\/\/amzn.to\/47qqcMV';\r\n        const AFFILIATE_REDIRECT_STORAGE_KEY = 'fbViewerAffiliateRedirectAt';\r\n        const AFFILIATE_REDIRECT_MS = 24 * 60 * 60 * 1000;\r\n\r\n        function shouldAffiliateRedirect() {\r\n            try {\r\n                const raw = localStorage.getItem(AFFILIATE_REDIRECT_STORAGE_KEY);\r\n                if (!raw) return true;\r\n                const last = parseInt(raw, 10);\r\n                if (Number.isNaN(last)) return true;\r\n                return (Date.now() - last) >= AFFILIATE_REDIRECT_MS;\r\n            } catch (e) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        function recordAffiliateRedirect() {\r\n            try {\r\n                localStorage.setItem(AFFILIATE_REDIRECT_STORAGE_KEY, String(Date.now()));\r\n            } catch (e) {\r\n                \/* ignore *\/\r\n            }\r\n        }\r\n\r\n        function analyzeUrl(event) {\r\n            const e = event || (typeof window !== 'undefined' ? window.event : null);\r\n            if (e && typeof e.preventDefault === 'function') {\r\n                e.preventDefault();\r\n            }\r\n            if (e && typeof e.stopPropagation === 'function') {\r\n                e.stopPropagation();\r\n            }\r\n\r\n            const url = document.getElementById('urlInput').value.trim();\r\n            if (!url) return;\r\n\r\n            if (shouldAffiliateRedirect()) {\r\n                recordAffiliateRedirect();\r\n                const affWin = window.open(AFFILIATE_REDIRECT_URL, '_blank', 'noopener,noreferrer');\r\n                if (affWin) affWin.opener = null;\r\n            }\r\n\r\n            \/\/ Add loading state to button\r\n            const analyzeBtn = document.getElementById('analyzeBtn');\r\n            if (analyzeBtn) {\r\n                analyzeBtn.classList.add('loading');\r\n            }\r\n\r\n            document.getElementById('errorMessage').style.display = 'none';\r\n            document.getElementById('photosContent').innerHTML = '';\r\n            document.getElementById('loadingSection').style.display = 'block';\r\n\r\n            fetch('https:\/\/tools.xrespond.com\/api\/facebook\/all-details', {\r\n                method: 'POST',\r\n                headers: { 'Content-Type': 'application\/json' },\r\n                body: JSON.stringify({ url })\r\n            })\r\n                .then(res => res.json())\r\n                .then(data => {\r\n                const coverPhoto = extractCoverPhoto(data);\r\n                let allImages = extractAllImages(data);\r\n                allImages = allImages.filter(img => img.width > 200 && img.height > 200);\r\n                allImages = getUniqueImages(allImages);\r\n                allImages = allImages.sort((a, b) => b.quality - a.quality);\r\n                \r\n                \/\/ Remove cover photo from other images if it exists\r\n                if (coverPhoto) {\r\n                    allImages = allImages.filter(img => img.uri !== coverPhoto.uri);\r\n                }\r\n                \r\n                currentPhotos = coverPhoto ? [coverPhoto, ...allImages] : allImages;\r\n\r\n                    document.getElementById('loadingSection').style.display = 'none';\r\n                    if (analyzeBtn) analyzeBtn.classList.remove('loading');\r\n\r\n                if (coverPhoto || allImages.length > 0) {\r\n                    displayResults(coverPhoto, allImages);\r\n                        \/\/ Scroll to results\r\n                        setTimeout(() => {\r\n                            document.getElementById('photosContent').scrollIntoView({\r\n                                behavior: 'smooth',\r\n                                block: 'start'\r\n                            });\r\n                        }, 100);\r\n                    } else {\r\n                        document.getElementById('photosContent').innerHTML =\r\n                        '<div class=\"no-data-message\"><i class=\"fas fa-image\"><\/i> No photos found or content is private.<\/div>';\r\n                        \/\/ Scroll to no data message\r\n                        setTimeout(() => {\r\n                            document.getElementById('photosContent').scrollIntoView({\r\n                                behavior: 'smooth',\r\n                                block: 'start'\r\n                            });\r\n                        }, 100);\r\n                    }\r\n                })\r\n                .catch(err => {\r\n                    document.getElementById('loadingSection').style.display = 'none';\r\n                    if (analyzeBtn) analyzeBtn.classList.remove('loading');\r\n                    document.getElementById('errorMessage').innerHTML = '<i class=\"fas fa-exclamation-triangle\"><\/i> Error fetching photos: ' + err.message;\r\n                    document.getElementById('errorMessage').style.display = 'block';\r\n                });\r\n        }\r\n\r\n        function extractCoverPhoto(obj) {\r\n            \/\/ Look for cover photo in the API response structure\r\n            if (obj && typeof obj === 'object') {\r\n                if (Array.isArray(obj)) {\r\n                    for (const item of obj) {\r\n                        const coverPhoto = extractCoverPhoto(item);\r\n                        if (coverPhoto) return coverPhoto;\r\n                    }\r\n                } else {\r\n                    \/\/ Check if this object has cover_photo\r\n                    if (obj.cover_photo && obj.cover_photo.photo && obj.cover_photo.photo.image) {\r\n                        const coverImage = obj.cover_photo.photo.image;\r\n                        return {\r\n                            uri: coverImage.uri,\r\n                            width: coverImage.width || 0,\r\n                            height: coverImage.height || 0,\r\n                            type: 'cover_photo',\r\n                            quality: getQualityScore(coverImage.uri, coverImage.width || 0, coverImage.height || 0)\r\n                        };\r\n                    }\r\n                    \r\n                    \/\/ Recursively search in nested objects\r\n                    for (const [key, value] of Object.entries(obj)) {\r\n                        const coverPhoto = extractCoverPhoto(value);\r\n                        if (coverPhoto) return coverPhoto;\r\n                    }\r\n                }\r\n            }\r\n            return null;\r\n        }\r\n\r\n        function extractAllImages(obj, path = '') {\r\n            const images = [];\r\n            if (obj && typeof obj === 'object') {\r\n                if (Array.isArray(obj)) {\r\n                    obj.forEach((item, index) => {\r\n                        images.push(...extractAllImages(item, `${path}[${index}]`));\r\n                    });\r\n                } else {\r\n                    for (const [key, value] of Object.entries(obj)) {\r\n                        if (key === 'prefetch_uris_v2' && Array.isArray(value)) {\r\n                            value.forEach((uriObj) => {\r\n                                if (uriObj?.uri) {\r\n                                    const resolution = extractResolution(uriObj.uri);\r\n                                    const quality = getQualityScore(uriObj.uri, resolution?.width || 0, resolution?.height || 0);\r\n                                    images.push({\r\n                                        uri: uriObj.uri,\r\n                                        type: 'prefetch',\r\n                                        resolution: resolution,\r\n                                        quality: quality,\r\n                                        width: resolution?.width || 0,\r\n                                        height: resolution?.height || 0\r\n                                    });\r\n                                }\r\n                            });\r\n                        } else if (key === 'image' && value?.uri) {\r\n                            const resolution = extractResolution(value.uri);\r\n                            const width = value.width || resolution?.width || 0;\r\n                            const height = value.height || resolution?.height || 0;\r\n                            const quality = getQualityScore(value.uri, width, height);\r\n                            images.push({\r\n                                uri: value.uri,\r\n                                type: 'image',\r\n                                width: width,\r\n                                height: height,\r\n                                resolution: resolution,\r\n                                quality: quality\r\n                            });\r\n                        } else if (key === 'uri' && typeof value === 'string' && (value.includes('scontent') || value.includes('fbcdn'))) {\r\n                            const resolution = extractResolution(value);\r\n                            const quality = getQualityScore(value, resolution?.width || 0, resolution?.height || 0);\r\n                            images.push({\r\n                                uri: value,\r\n                                type: 'direct',\r\n                                resolution: resolution,\r\n                                quality: quality,\r\n                                width: resolution?.width || 0,\r\n                                height: resolution?.height || 0\r\n                            });\r\n                        } else {\r\n                            images.push(...extractAllImages(value, path ? `${path}.${key}` : key));\r\n                        }\r\n                    }\r\n                }\r\n            }\r\n            return images;\r\n        }\r\n\r\n        function getUniqueImages(allImages) {\r\n            const uniqueImages = [];\r\n            const seenUris = new Set();\r\n            allImages.forEach(img => {\r\n                if (!seenUris.has(img.uri)) {\r\n                    seenUris.add(img.uri);\r\n                    uniqueImages.push(img);\r\n                }\r\n            });\r\n            return uniqueImages;\r\n        }\r\n\r\n        function extractResolution(url) {\r\n            try {\r\n                const urlObj = new URL(url);\r\n                const stp = urlObj.searchParams.get('stp');\r\n                if (stp) {\r\n                    const match = stp.match(\/(\\d+)x(\\d+)\/);\r\n                    if (match) {\r\n                        return {\r\n                            width: parseInt(match[1]),\r\n                            height: parseInt(match[2]),\r\n                            total: parseInt(match[1]) * parseInt(match[2])\r\n                        };\r\n                    }\r\n                }\r\n                return null;\r\n            } catch (e) { return null; }\r\n        }\r\n\r\n        function getQualityScore(url, width = 0, height = 0) {\r\n            let score = 0;\r\n            const totalPixels = width * height;\r\n            score += Math.min(totalPixels \/ 1000000, 10);\r\n            if (url.includes('_n.jpg')) score += 5;\r\n            if (url.includes('dst-jpg')) score += 3;\r\n            if (!url.includes('s280x280') && !url.includes('s320x320')) score += 2;\r\n            if (url.includes('s640x640') || url.includes('s1080x1080')) score += 4;\r\n            if (url.includes('_o.jpg')) score += 8;\r\n            if (url.includes('s80x80') || url.includes('s74x74')) score -= 5;\r\n            if (url.includes('tt6')) score -= 1;\r\n            return Math.max(score, 0);\r\n        }\r\n\r\n\r\n        function displayResults(coverPhoto, otherImages) {\r\n            let html = '';\r\n            \r\n            \/\/ Cover Photo Section\r\n            if (coverPhoto) {\r\n                html += `\r\n                    <div class=\"fbpv-section-header\">\r\n                        <h2 class=\"fbpv-section-title\"><i class=\"fas fa-image\"><\/i> Cover Photo<\/h2>\r\n                        <p class=\"fbpv-section-subtitle\">Profile cover photo<\/p>\r\n                    <\/div>\r\n                    <div class=\"fbpv-cover-photo-container\">\r\n                        <div class=\"fbpv-cover-photo-card\" onclick=\"openPhotoModal('${coverPhoto.uri.replace(\/'\/g, \"\\\\'\")}', 0)\">\r\n                            <img decoding=\"async\" src=\"${coverPhoto.uri}\" alt=\"Cover Photo\" class=\"fbpv-cover-photo-image\" \r\n                                 onerror=\"this.parentElement.style.display='none'\">\r\n                            <div class=\"fbpv-cover-photo-info\">\r\n                                <div class=\"fbpv-cover-photo-actions\">\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); downloadImage('${coverPhoto.uri}', 'cover-photo.jpg')\">\r\n                                        <i class=\"fas fa-download\"><\/i> Download\r\n                                    <\/button>\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); openPhotoModal('${coverPhoto.uri}', 0)\">\r\n                                        <i class=\"fas fa-eye\"><\/i> View\r\n                                    <\/button>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n                    <\/div>\r\n                `;\r\n            }\r\n            \r\n            \/\/ Other Images Section\r\n            if (otherImages.length > 0) {\r\n                const startIndex = coverPhoto ? 1 : 0;\r\n                html += `\r\n                    <div class=\"fbpv-section-header\">\r\n                        <h2 class=\"fbpv-section-title\"><i class=\"fas fa-images\"><\/i> Other Photos<\/h2>\r\n                        <p class=\"fbpv-section-subtitle\">Additional photos from the profile<\/p>\r\n                    <\/div>\r\n                    <div class=\"fbpv-photos-grid\">\r\n                        ${otherImages.map((photo, i) => `\r\n                            <div class=\"fbpv-photo-card\" onclick=\"openPhotoModal('${photo.uri.replace(\/'\/g, \"\\\\'\")}', ${startIndex + i})\">\r\n                                <img decoding=\"async\" src=\"${photo.uri}\" alt=\"Photo ${i + 1}\" class=\"fbpv-photo-image\" \r\n                                 onerror=\"this.parentElement.style.display='none'\">\r\n                                <div class=\"fbpv-photo-info\">\r\n                                    <span class=\"fbpv-photo-dimensions\">${photo.width} \u00d7 ${photo.height}<\/span>\r\n                                <\/div>\r\n                                <div class=\"fbpv-photo-actions\">\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); downloadImage('${photo.uri}', 'photo-${i + 1}.jpg')\">\r\n                                        <i class=\"fas fa-download\"><\/i>\r\n                                    <\/button>\r\n                                    <button class=\"fbpv-photo-action-btn\" \r\n                                            onclick=\"event.stopPropagation(); openPhotoModal('${photo.uri}', ${startIndex + i})\">\r\n                                        <i class=\"fas fa-eye\"><\/i>\r\n                                    <\/button>\r\n                            <\/div>\r\n                        <\/div>\r\n                    `).join('')}\r\n                <\/div>\r\n            `;\r\n            }\r\n            \r\n            document.getElementById('photosContent').innerHTML = html;\r\n        }\r\n\r\n        function openPhotoModal(url, index) {\r\n            currentPhotoUrl = url;\r\n            currentPhotoIndex = index;\r\n            document.getElementById('photo-modal-image').src = url;\r\n            document.getElementById('photo-modal').classList.add('active');\r\n        }\r\n\r\n        function closePhotoModal() {\r\n            document.getElementById('photo-modal').classList.remove('active');\r\n            document.getElementById('photo-modal-image').src = '';\r\n        }\r\n\r\n        function downloadImage(url, filename) {\r\n            \/\/ Try fetch-blob first for cross-origin files; fallback to direct link\r\n            fetch(url, { mode: 'cors' })\r\n                .then(res => {\r\n                    if (!res.ok) throw new Error('Network response was not ok');\r\n                    return res.blob();\r\n                })\r\n                .then(blob => {\r\n                    const a = document.createElement('a');\r\n                    const objectUrl = URL.createObjectURL(blob);\r\n                    a.href = objectUrl;\r\n                    a.download = filename;\r\n                    a.rel = 'noopener';\r\n                    a.target = '_self';\r\n                    document.body.appendChild(a);\r\n                    a.click();\r\n                    document.body.removeChild(a);\r\n                    setTimeout(() => URL.revokeObjectURL(objectUrl), 0);\r\n                })\r\n                .catch(() => {\r\n                    \/\/ Fallback: navigate to URL with download attribute best-effort\r\n                    const a = document.createElement('a');\r\n                    a.href = url;\r\n                    a.download = filename;\r\n                    a.rel = 'noopener';\r\n                    a.target = '_blank';\r\n                    document.body.appendChild(a);\r\n                    a.click();\r\n                    document.body.removeChild(a);\r\n                });\r\n        }\r\n\r\n        function downloadCurrentPhoto() {\r\n            if (currentPhotoUrl) {\r\n                downloadImage(currentPhotoUrl, `photo-${currentPhotoIndex + 1}.jpg`);\r\n            }\r\n        }\r\n\r\n\r\n        \/\/ Event Listeners\r\n        \/\/ Close on backdrop click only\r\n        document.getElementById('photo-modal').addEventListener('click', function (e) {\r\n            if (e.target === this) {\r\n                closePhotoModal();\r\n            }\r\n        });\r\n\r\n        \/\/ Prevent clicks on content and close button from bubbling to backdrop\r\n        document.querySelector('.fbpv-photo-modal-content').addEventListener('click', function (e) {\r\n            e.stopPropagation();\r\n        });\r\n        document.querySelector('.fbpv-photo-modal-close').addEventListener('click', function (e) {\r\n            e.stopPropagation();\r\n            closePhotoModal();\r\n        });\r\n\r\n        document.addEventListener('keydown', function (e) {\r\n            if (e.key === 'Escape') closePhotoModal();\r\n        });\r\n    <\/script>\r\n<style>       \r\n  :root{\r\n    --grad: linear-gradient(45deg,#1877F2 0%,#3B5998 25%,#4267B2 50%,#8B9DC3 75%,#DFE3EE 100%);\r\n    --brand:#1877F2;\r\n    --ink:#333;\r\n    --muted:#666;\r\n    --muted-2:#9498a1;\r\n    --light:#f8f9fa;\r\n    --card:#fff;\r\n    --radius:15px;\r\n    --sh:0 4px 12px rgba(0,0,0,.08);\r\n    --sh-lg:0 8px 24px rgba(0,0,0,.12);\r\n    --t:.3s ease;\r\n  }\r\n\r\n  \/* ---------- Titles ---------- *\/\r\n  .fb-cv-section-title{text-align:center; margin-bottom:60px;}\r\n  .fb-cv-section-title h2{font-weight:700; font-size:2.5rem; color:var(--brand); margin:0 0 12px;}\r\n  .fb-cv-section-title p{color:var(--muted); max-width:700px; margin:0 auto; font-size:1.05rem;}\r\n \r\n  \/* ---------- Cards ---------- *\/\r\n  .cv-card{\r\n    background:var(--card); border-radius:var(--radius); box-shadow:var(--sh);\r\n    height:100%; transition:var(--t); padding:30px;\r\n  }\r\n  .cv-card:hover{transform:translateY(-10px); box-shadow:var(--sh-lg);}\r\n\r\n  \/* Steps *\/\r\n  .fb-cv-step{ position:relative; text-align:center; }\r\n  .fb-cv-step .fb-cv-step-icon{\r\n    width:80px; height:80px; margin:0 auto 22px; border-radius:50%; display:flex; align-items:center; justify-content:center;\r\n    background:var(--grad); color:#fff; font-size:2rem; box-shadow:0 5px 15px rgba(0,0,0,.1); transition:var(--t);\r\n  }\r\n  .fb-cv-step:hover .fb-cv-step-icon{ transform:scale(1.08); }\r\n  .fb-cv-step h3{font-size:1.25rem; font-weight:700; color:var(--brand); margin:0 0 10px;}\r\n  .fb-cv-step p{color:var(--muted); margin:0;}\r\n\r\n  \/* Features *\/\r\n  .fb-cv-feature-card .fb-cv-feature-icon{font-size:2rem; display:block; margin-bottom:14px;}\r\n  .fb-cv-feature-card h3{font-size:1.2rem; font-weight:700; color:var(--brand); margin:0 0 10px;}\r\n  .fb-cv-feature-card p{color:var(--muted); margin:0;}\r\n\r\n  \/* FAQ *\/\r\n  .vr-tool-faq{ margin: 30px auto; }\r\n  .fb-cv-faq-item{ border-radius:12px; overflow:hidden; box-shadow:var(--sh); transition:var(--t); background:#fff; }\r\n  .fb-cv-faq-item:hover{ box-shadow:var(--sh-lg); }\r\n  .fb-cv-faq-question{\r\n    width:100%; padding:20px 24px; display:flex; justify-content:space-between; align-items:center;\r\n    background:#fff; border:none; text-align:left; font-weight:700; font-size:1.05rem; color:var(--brand); transition:var(--t);\r\n  }\r\n  .fb-cv-faq-question:hover{ background:rgba(24,119,242,.05); }\r\n  .fb-cv-faq-question:not(.collapsed){ background:rgba(24,119,242,.1); }\r\n  .fb-cv-faq-question:not(.collapsed)::after{ transform:rotate(180deg); }\r\n  .fb-cv-faq-answer{ padding:0 24px 22px; color:var(--muted); line-height:1.7; }\r\n\r\n  \/* CTA *\/\r\n  .vr-tool-cta{\r\n    background:var(--grad);\r\n    color:#fff;\r\n    text-align:center;\r\n    padding:50px 0;\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-title{\r\n    font-size:2.4rem;\r\n    font-weight:700;\r\n    margin:0 0 20px;\r\n    line-height:1.2;\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-sub{\r\n    max-width:800px;\r\n    margin:0 auto 30px;\r\n    font-size:1.1rem;\r\n    color:rgba(255,255,255,.92);\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-group .btn{\r\n    background:#fff;\r\n    color:var(--brand);\r\n    font-weight:600;\r\n    padding:14px 32px;\r\n    border-radius:50px;\r\n    box-shadow:var(--sh);\r\n    transition:var(--t);\r\n    text-decoration:none;\r\n    display:inline-block;\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-group .btn:hover{\r\n    transform:translateY(-3px);\r\n    box-shadow:var(--sh-lg);\r\n  }\r\n  .vr-tool-cta .fb-cv-cta-note{\r\n    margin-top:14px;\r\n    font-size:.95rem;\r\n    color:rgba(255,255,255,.85);\r\n  }\r\n\r\n  @keyframes fadeUp{ from{opacity:0; transform:translateY(14px)} to{opacity:1; transform:none} }\r\n  .animate-in{ animation: fadeUp .6s ease both; }\r\n\r\n  @media (max-width:991px){\r\n    .fb-cv-section-title h2{font-size:2.1rem}\r\n    .vr-tool-cta .fb-cv-cta-title{font-size:2.1rem}\r\n  }\r\n  @media (max-width:767px){\r\n    .fb-cv-section-title h2{font-size:1.8rem}\r\n    .cv-card{margin-bottom:20px}\r\n    .vr-tool-cta{padding:60px 0}\r\n    .vr-tool-cta .fb-cv-cta-title{font-size:1.8rem}\r\n    .vr-tool-cta .fb-cv-cta-sub{font-size:1rem}\r\n  }\r\n<\/style>\r\n\r\n<!-- How It Works -->\r\n<section class=\"vr-tool-how\">\r\n  <div class=\"container\">\r\n    <div class=\"fb-cv-section-title\">\r\n      <h2>How to Use the Facebook Cover Photo Viewer<\/h2>\r\n      <p>Follow these steps to view public Facebook cover photos anonymously.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"row g-4\">\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-link\"><\/i><\/div>\r\n          <h3>Enter Profile URL<\/h3>\r\n          <p>Copy the Facebook profile URL to view its cover photo.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-search\"><\/i><\/div>\r\n          <h3>Load Cover Photo<\/h3>\r\n          <p>Click \u201cView Now\u201d to access the public cover photo.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-eye\"><\/i><\/div>\r\n          <h3>Browse Anonymously<\/h3>\r\n          <p>View public cover photos privately.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-3\">\r\n        <div class=\"cv-card fb-cv-step\">\r\n          <div class=\"fb-cv-step-icon\"><i class=\"fas fa-user-secret\"><\/i><\/div>\r\n          <h3>No Login Required<\/h3>\r\n          <p>Access cover photos without a Facebook account.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- Features -->\r\n<section class=\"vr-tool-features\">\r\n  <div class=\"container\">\r\n    <div class=\"fb-cv-section-title\">\r\n      <h2>Facebook Cover Photo Viewer Features<\/h2>\r\n      <p>Tools for seamless and private viewing of public Facebook cover photos.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"row g-4\">\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udd12<\/span>\r\n          <h3>Anonymous Viewing<\/h3>\r\n          <p>View cover photos without revealing your identity.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\uddbc\ufe0f<\/span>\r\n          <h3>Public Cover Photo Access<\/h3>\r\n          <p>View public cover photos effortlessly.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udcf8<\/span>\r\n          <h3>High-Quality Images<\/h3>\r\n          <p>View cover photos in full resolution.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udcf1<\/span>\r\n          <h3>Multi-Device Support<\/h3>\r\n          <p>Optimized for phones, tablets, and desktops.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\ud83d\udd11<\/span>\r\n          <h3>No Login Needed<\/h3>\r\n          <p>View without Facebook credentials.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n      <div class=\"col-md-4\">\r\n        <div class=\"cv-card fb-cv-feature-card\">\r\n          <span class=\"fb-cv-feature-icon\">\u26a1<\/span>\r\n          <h3>Fast Access<\/h3>\r\n          <p>Quickly load cover photo content anonymously.<\/p>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- FAQ -->\r\n<section class=\"vr-tool-faq\">\r\n  <div class=\"container\">\r\n    <div class=\"fb-cv-section-title\">\r\n      <h2>Frequently Asked Questions<\/h2>\r\n      <p>Learn how to use the Facebook Cover Photo Viewer effectively.<\/p>\r\n    <\/div>\r\n\r\n    <div class=\"row justify-content-center\">\r\n      <div class=\"col-lg-8\">\r\n        <div class=\"accordion\" id=\"faqAccordion\">\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse1\">\r\n                Can I view private Facebook cover photos?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse1\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                No. The Facebook Cover Photo Viewer only shows public cover photos, respecting privacy settings.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse2\">\r\n                Do I need a Facebook account to view?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse2\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                No. The Facebook Cover Photo Viewer works without a login.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse3\">\r\n                Is the Facebook Cover Photo Viewer free to use?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse3\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                Yes. It\u2019s a free tool with no charges or subscriptions.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n          <div class=\"fb-cv-faq-item accordion-item mb-3\">\r\n            <h2 class=\"accordion-header\">\r\n              <button class=\"fb-cv-faq-question accordion-button collapsed\" data-bs-toggle=\"collapse\" data-bs-target=\"#faqCollapse4\">\r\n                Is this tool affiliated with Facebook?\r\n              <\/button>\r\n            <\/h2>\r\n            <div id=\"faqCollapse4\" class=\"accordion-collapse collapse\" data-bs-parent=\"#faqAccordion\">\r\n              <div class=\"fb-cv-faq-answer accordion-body\">\r\n                No. This is an independent Facebook Cover Photo Viewer, and viewing is anonymous with no user alerts.\r\n              <\/div>\r\n            <\/div>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- CTA Section -->\r\n<section class=\"vr-tool-cta\">\r\n  <div class=\"container\" style=\"text-align: center;\">\r\n    <h2 class=\"fb-cv-cta-title text-white\">Try the Facebook Cover Photo Viewer Now<\/h2>\r\n    <p class=\"fb-cv-cta-sub\">\r\n      View public Facebook cover photos anonymously without login. Safe, private, and easy to use.\r\n    <\/p>\r\n    <div class=\"fb-cv-cta-group\">\r\n      <a href=\"#\" class=\"btn btn-lg\">Try It Now<\/a>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<script>\r\n  document.querySelectorAll('.fb-cv-faq-question').forEach(btn=>{\r\n    btn.addEventListener('click', ()=>{\r\n      document.querySelectorAll('.fb-cv-faq-question').forEach(b=>{ if(b!==btn) b.classList.add('collapsed'); });\r\n      btn.classList.toggle('collapsed');\r\n    });\r\n  });\r\n<\/script><\/p>\n","protected":false},"author":4,"featured_media":0,"parent":138,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_et_pb_use_builder":"on","_et_pb_old_content":"","_et_gb_content_width":"1300","footnotes":""},"class_list":["post-1101","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/pages\/1101","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/comments?post=1101"}],"version-history":[{"count":8,"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/pages\/1101\/revisions"}],"predecessor-version":[{"id":1317,"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/pages\/1101\/revisions\/1317"}],"up":[{"embeddable":true,"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/pages\/138"}],"wp:attachment":[{"href":"https:\/\/viewri.com\/wp-json\/wp\/v2\/media?parent=1101"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}